用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';
这个语句就是正确的了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通