1

サーバーからローカル MySQL データベースに転送したい大きな Hive テーブルがあります。これを行う標準的な方法はありますか?

メタストアから Hive ファイルをダウンロードしましたが、データベースに解析するのが難しい異常な形式のようです (列が分離されていないようです)。

ハイブからのファイルの例:

"1980""007"59610.0016778523489932886"actors""007"59610.0016778523489932886"7d""007"59620.003355704697986577"abu""007"59610.0016778523489932886

編集:ここに私のテーブルがあります

DESCRIBE phil_overall_cooc

0   tag_a   string  
1   tag_b   string  
2   bcount  bigint  
3   cooc    bigint  
4   prob    double
4

2 に答える 2

1

Sqoop はあなたが探しているものです ! これを使用してデータを MySQL に送信しています。唯一のトリックは、パーティションなしで TEXTFILE を使用する必要があることです。

file_format:
  : SEQUENCEFILE
  | TEXTFILE
  | RCFILE     (Note: only available starting with 0.6.0)
  | ORC        (Note: only available starting with 0.11.0)
  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create%2FDrop%2FTruncateTable

TEXTFILE にない場合は、

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-InsertingdataintoHiveTablesfromqueries

エクスポート テーブルができたので、次のように sqoop を使用できます。

sqoop export 
  --connect ${YOUR_CONNECTION_STRING}
  --username ${YOUR_USERNAME} 
  --password ${YOUR_PASSWORD}
  --table ${MYSQL_TABLE_NAME}
  --update-key ${FIELD1[,FIELD2]*}
  --update-mode allowinsert 
  --export-dir ${PATH_TO_YOUR_HIVE_TABLE_ON_HDFS} 
  --input-fields-terminated-by \001 
  --num-mappers 1 
  --batch 
  --verbose

http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_syntax_3

幸運を !

于 2013-08-02T19:20:01.417 に答える
0
  • このPDFは、役立つ標準ガイドです。

  • このリンクは、ハイブへのデータのインポートについて説明しています(これは、要件とは正反対です)。しかし、ハイブからの「エクスポート」についてのアイデアも得られます。

于 2013-01-26T13:27:08.647 に答える