1

我有一个大型 Hive 表,我想将它从服务器传输到我的本地 MySQL 数据库。有没有这样做的标准方法?

我从 Metastore 下载了 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 回答