我是靠谱客的博主 默默小馒头,最近开发中收集的这篇文章主要介绍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表

最后

以上就是默默小馒头为你收集整理的Sqoop基于递增列的增量数据之Append方式的全部内容,希望文章能够帮你解决Sqoop基于递增列的增量数据之Append方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部