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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

jclian91 2017-11-30 09:56:34 浏览985
展开阅读全文

利用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 test
create 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数据互导。



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

网友评论

登录后评论
0/500
评论
jclian91
+ 关注