将Hive表转换为MySQL

时间:2013-01-25 14:09:35

标签: mysql hive

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

我从Metastore下载了Hive文件,它似乎是一个不寻常的格式,很难解析到数据库(这些列似乎甚至没有分开)

e.g。来自蜂巢的文件:

"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

2 个答案:

答案 0 :(得分: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

祝你好运!

答案 1 :(得分:0)

  • PDF是帮助您的标准指南。

  • link讨论了如何将数据导入配置单元(这与您的要求相反)。但它也会从蜂巢给你关于'出口'的想法。