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

具体详解 请看 Sqoop基于时间列的增量数据之LastModified方式

增量数据导入分两种,一是基于递增列的增量数据导入(Append方式)。二是基于时间列的增量数据导入(LastModified方式)。
都差不多 这里只写步骤

1.准备mysql表和数据

Sqoop基于递增列的增量数据之Append方式_第1张图片

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 值改变

Sqoop基于递增列的增量数据之Append方式_第2张图片

5.增加mysql数据,再次执行job,然后查看数据

Sqoop基于递增列的增量数据之Append方式_第3张图片
[root@hadoop01 ~]# sqoop job --exec mysecondjob
然后查看信息
[root@hadoop01 ~]# sqoop job --show mysecondjob
Sqoop基于递增列的增量数据之Append方式_第4张图片
Sqoop基于递增列的增量数据之Append方式_第5张图片




若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

Sqoop基于递增列的增量数据之Append方式_第6张图片
Sqoop基于递增列的增量数据之Append方式_第7张图片
没有找到–hive–指定分隔符的属性
所以输出的时候指定分隔符 为 \u0001 不然读出来为空
教训:
Sqoop基于递增列的增量数据之Append方式_第8张图片
但是 不识别!!!!
Cannot understand character argument: \u0001

Sqoop基于递增列的增量数据之Append方式_第9张图片
所以 放弃了 手动建hive表

你可能感兴趣的:(sqoop增量导入,Append,sqoop)