我有一个大的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
答案 0 :(得分:1)
Sqoop正是您要找的!我用它将我的数据发送到MySQL。唯一的技巧是你必须使用没有
分区的TEXTFILEfile_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
如果它不在TEXTFILE中,你可以做
INSERT INTO TABLE tablename1 [PARTITION(partcol1 = val1,partcol2 = val2 ...)] select_statement1 FROM from_statement;
现在你有了导出表,你可以使用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)