用sqoop将hive导出到mysql和mysql导入hive
sqoop的安装和使用教程参考博客:https://blog.csdn.net/qq_42502354/article/details/106727502,
测试是否连接mysql:bin/sqoop list-databases --connect jdbc:mysql://linux-centos7-03:3306/ --username root --password 123456
将hive数据导出到mysql数据库:
bin/sqoop export --connect jdbc:mysql://linux-centos7-03:3306/cmy --username root --password 123456 --table table1 --export-dir '/user/hive/warehouse/cmy.db/table1' --fields-terminated-by ',' --input-null-non-string '\\N';
注释:# --fields-terminated-by ',' 分隔符 # --input-null-non-string 忽略表数据中的空值
将mysql数据导入到hive数据库:
bin/sqoop import --connect jdbc:mysql://linux-centos7-03:3306/cmy --username root --password 123456 --table data -m 1 --hive-import --hive-table cmy.data --fields-terminated-by ',';
注释:-m 1 一定要加,不然会报错
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------(分割线)
今天还是用这些代码把数据导出来,但是一直给我报错,以前怎么没发现错误,捣鼓了两个小时才发现,在hive中创建表时用的是create table tablename as select …语句,而且没有指定分隔符,但是hive表默认的分隔符是“\001”,但是我还是用的是逗号分隔符,哎。。
bin/sqoop export --connect jdbc:mysql://linux-centos7-03:3306/cmy --username root --password 123456 --table jduserlevelname_out --export-dir '/user/hive/warehouse/jingdong.db/userlevelname_out' --fields-terminated-by '\001' --input-null-non-string '\\N';
这个语句就是正确的了

浙公网安备 33010602011771号