ETL工具Sqoop的入门学习(二)
回顾
对于sqoop将MySQL某一张表的全量导入hdfs上和hdfs上的数据全量导出到MySQL中的某一张表可查看这里ETL工具Sqoop的入门学习(一)
对数据来源感兴趣的伙伴可以参考这篇博客python 爬取应届生求职网中的求职信息并存入MySQL数据库
1,eval语句-查询数据插入数据
eval语句就是用来检验我们的sql语句是否正确,相当于数据库的一个客户端对数据库的操作。
i,eval条件查询语句(这里我用脚本方式编写,方便二次书写)
查询mum大于4的子段
#bin/bash
echo "开始执行eval查询语句"
ip="your IP"
db="spider"
pwd="1234567"
sqoop eval --connect jdbc:mysql://$ip:3306/$db \
--username root --password $pwd \
--query "select * from job where num >4"
查询结果
ii,eval插入语句,将数据插入到MySQL中
#bin/bash
echo "开始执行eval插入语句"
ip="your IP"
db="spider"
pwd="1234567"
sqoop eval --connect jdbc:mysql://$ip:3306/$db \
--username root --password $pwd \
--query "insert into job values(74,'阿里巴巴','p7','杭州','alibaba','2020-05-08')"
插入结果
2,import的增量导入将数据增量从MySQL导入HDFS
增量导入概念:根据数据库中某一字段,增加的导入数据,在HDFS上单独形成一个文件。
编写脚本命令,指定num列的第三个3字段开始增量导入,前3个字段不存在记录中
重要参数理解
–incremental append 表明增量导入
–check-column num 检查的是mysql数据库表中的num字段
–last-value 3 从id=4开始往后导入
#bin/bash
echo "开始执行import导入"
ip="your local ip"
db="spider"
pwd="1234567"
tar_dir="import"
table_name="job"
sqoop import --connect jdbc:mysql://$ip:3306/$db \
--username root --password $pwd \
--table $table_name \
--target-dir /sqoop/$tar_dir \
--incremental append \
--check-column num \
--last-value 3
--m 2
echo "执行sqoop import增量导入完成"
#注意:增量导入的时候,不能加参数--delete-target-dir否则会报错
执行成功
查看结果
与我们的MySQL中的数据对比,从第四条数据包括第四条数据都被导入hdfs中。