利用Sqoop实现MySQL与HDFS数据互导

来源:互联网 发布:手机版logo设计软件 编辑:程序博客网 时间:2024/06/08 08:14

利用Sqoop将MySQL中的数据表导入到hdfs端:(表格的主键要存在)
首先在MySQL的test数据库中有如下表格person:
这里写图片描述
在终端输入以下命令即可实现将person表导入到hdfs端:

sqoop import \--connect jdbc:mysql://localhost/test \--username root --password 147369 \--table person \--target-dir /vagrant/person_hdfs \--null-non-string '\\N';

其中import表示导入数据,connect行命令表示连接MySQL的test数据库,username和password为MySQL的用户名和密码,table为要导入的表格,target-dir为hdfs的目标位置,null-non-string ‘\N’会将数据库表中的null值转化为Hive和Impala中的\N,便于兼容。
运行结果如下:
这里写图片描述
前往hdfs网页查看:
这里写图片描述

利用Sqoop将hdfs端的数据表导入到MySQL:
1.查看hdfs端数据的内容:
这里写图片描述
可知:person目录下的数据以’,’为分界符。我们的目标是将person目录下的全部数据导入到MySQL。
2.在MySQL中创建相应格式的表格:

use testcreate table p(id int primary key, age int, sex int);

3.在终端输入以下命令即可实现将hdfs端person目录下的数据导入到MySQL中:

sqoop export \> --connect jdbc:mysql://localhost/test \> --username root --password 147369 \> --table p \> --export-dir /user/hive/warehouse/person/* \> --input-fields-terminated-by ',';

其中export命令表示导出数据,table为MySQL中test数据库的表格p,export-dir为hdfs端需要导出的目录,input-fields-terminated-by ‘,’表示hdfs端需要导出的数据的分界符为’,’。
4.前往MySQL数据库查看:
这里写图片描述
Bingo,这样我们就利用Sqoop实现MySQL与HDFS数据互导。



本次分享到此结束,欢迎大家交流与批评~~

原创粉丝点击