Sqoop基于递增列的增量数据之Append方式

具体详解 请看 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表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值