具体详解 请看 Sqoop基于时间列的增量数据之LastModified方式
增量数据导入分两种,一是基于递增列的增量数据导入(Append方式)。二是基于时间列的增量数据导入(LastModified方式)。
都差不多 这里只写步骤
1.准备mysql表和数据
2.创建sqoop job
–append 与 --hive 不能同用
关键字段
- –incremental append \
- –check-column id \
- –last-value 0 \
- 第一次导入设置id值为0 这样比它大的都会导入
so mysql导入到hive表使用append只能写hive表数据的hdfs的路径
增量append方式导入数据:
sqoop job --create mysecondjobs -- import --connect jdbc:mysql://hadoop01:3306/test \
--username root --password root \
--driver com.mysql.jdbc.Driver \
--table userinfo \
-m 1 \
--incremental append \
--check-column id \
--last-value 0 \
--target-dir hdfs://qf:8020//user/hive/warehouse/guli.db/userinfo
指定字段间隔符
–fields-terminated-by ‘\u0001’ \ u0001不识别昂 可以写 \t 等别的。
2.建hive表
create table userinfo(
id bigint,
firstname string
)
row format delimited fields terminated by ',';
3. 查看并执行job
上面已经创建了job后,可以通过下面的命令来查看是否已经创建job成功:
sqoop job --list 列出所有的job
sqoop job --show jobname 显示jobname的信息 要输密码
sqoop job --delete jobname 删除jobname
sqoop job --exec jobname 执行jobname 要输密码
过程信息
19/09/20 17:44:18 INFO tool.ImportTool: Lower bound value: 0
19/09/20 17:44:18 INFO tool.ImportTool: Upper bound value: 6
结果信息
19/09/20 17:44:45 INFO mapreduce.ImportJobBase: Transferred 140.7842 KB in 26.3796 seconds (5.3369 KB/sec)
19/09/20 17:44:45 INFO mapreduce.ImportJobBase: Retrieved 6 records.
19/09/20 17:44:45 INFO util.AppendUtils: Appending to directory userinfo_append
19/09/20 17:44:45 INFO util.AppendUtils: Using found partition 2
19/09/20 17:44:45 INFO tool.ImportTool: Saving incremental import state to the metastore
19/09/20 17:44:45 INFO tool.ImportTool: Updated data for job: mysecondjob
查询job信息
[root@hadoop01 ~]# sqoop job --show mysecondjob
incremental.last.value = 6 值改变
5.增加mysql数据,再次执行job,然后查看数据
[root@hadoop01 ~]# sqoop job --exec mysecondjob
然后查看信息
[root@hadoop01 ~]# sqoop job --show mysecondjob
若mysql字段太多 可以使用sqoop语句在hive端创建mysql表结构的表
sqoop create-hive-table \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop01:3306/test \
--username root --password root \
--table userinfo \
--hive-database guli \
--hive-table userinfo
没有找到–hive–指定分隔符的属性
所以输出的时候指定分隔符 为 \u0001 不然读出来为空
教训:
但是 不识别!!!!
Cannot understand character argument: \u0001
所以 放弃了 手动建hive表