使用sqoop job做增量导入

在执行导入模式为 incremental 的sqoop job 时,sqoop会获取上次导入操作的 –check-column的value值,也就是说使用sqoop job在做增量导入的时候,不用手动指定 --last-value的值
但是也有这样的一种情况,sqoop job中如果指定了--incremental 为append模式导入,在指定了增量列--check-column之后,比如id为增量列,并且指定了--last-value的值,比如设置为100,那么在执行sqoop job的时候就会将id>100的行导入到hive中去

增量导入举个例子

  • mysql建表
  1. CREATE TABLE `sqoop_job_incremental` (
  2. `id` int() DEFAULT NULL,
  3. `name` varchar() DEFAULT NULL,
  4. `last_mod` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  5. ) ENGINE=InnoDB DEFAULT CHARSET=latin1
  • mysql插入数据
  1. insert into sqoop_job_incremental(id,name) values(,'name1');
  2. insert into sqoop_job_incremental(id,name) values(,'name2');
  3. insert into sqoop_job_incremental(id,name) values(,'name3');
  • 此时mysql中的数据
  1. name1 -- ::
  2. name2 -- ::
  3. name3 -- ::
  • 将mysql表结构同步到hive中
  1. sqoop create-hive-table --connect jdbc:mysql://localhost:3306/sqooptest --username root --password 123qwe --table sqoop_job_incremental
    --hive-table sqoop_job_incremental --fields-terminated-by ','
  • 新建增量导入的sqoop job
  1. sqoop job --create sqoop_job_incremental -- import --connect jdbc:mysql://localhost:3306/sqooptest --username root --password 123qwe --table sqoop_job_incremental
    --hive-import --hive-table sqoop_job_incremental --check-column last_mod --incremental lastmodified --fields-terminated-by ',' -m 1
  • 执行job
  1. sqoop job --exec sqoop_job_incremental
  • 查看hive结果
  1. hive> select * from sqoop_job_incremental
  2. > ;
  3. OK
  4. name1 -- ::56.0
  5. name2 -- ::13.0
  6. name3 -- ::20.0
  • 加入增量数据
  1. insert into sqoop_job_incremental(id,name) values(,'name4');
  2. insert into sqoop_job_incremental(id,name) values(,'name5');
  • 此时mysql表中的数据
  1. name1 -- ::
  2. name2 -- ::
  3. name3 -- ::
  4. name4 -- ::
  5. name5 -- ::
  • 执行job
  1. sqoop job --exec sqoop_job_incremental

  因为--check-column 为 last_mod(数据更改时间),sqoop在本次执行任务的时候获取到上次任务执行的last_mod值,只导入大于last_mod的数据.

  • 查看hive中的结果
  1. hive> select * from sqoop_job_incremental;
  2. OK
  3. name1 -- ::56.0
  4. name2 -- ::13.0
  5. name3 -- ::20.0
  6. name4 -- ::02.0
  7. name5 -- ::09.0
  8. Time taken: 1.649 seconds, Fetched: row(s)

发现第二次执行job任务只导入了两条,这两条就是上次任务之后新添加的数据。

每次执行任务都会提示输入密码,可通过配置取消这一提示,直接使用job中指定的密码

在conf/sqoop-site.xml文件中配置
sqoop.metastore.client.record.password
设置为true即可。

sqoop job 增量导入的更多相关文章

  1. sqoop定时增量导入导出

    sqoop定时增量导入 2013-11-06 14:23 4553人阅读 评论(0) 收藏 举报 sqoop使用hsql来存储job信息,开启metastor service将job信息共享,所有no ...

  2. sqoop的增量导入(increment import)

    1.import增量导入的官方说明

  3. sqoop job 实现自动增量导入

    一.测试环境 1.MySQL表结构 mysql> show create table autoextend\GCREATE TABLE `autoextend` (  `id` bigint(2 ...

  4. Sqoop实现自定义job的增量导入

    需求:redis缓存的数据隔段时间往MySQL中写入一次.如果按照job的增量导入,比如上次redis向mysql导入数据时间为8:00,下一次导入时间为9:00,8:20sqoop进行增量导入,导入 ...

  5. Sqoop增量导入

    Argument Description --check-column (col) Specifies the column to be examined when determining which ...

  6. Sqoop修改sqoop元信息实现job的增量导入

    最简单方式是按主键增量导入:http://blog.csdn.net/ggz631047367/article/details/50185319 以下方法只做存档 需求:redis缓存的数据隔段时间往 ...

  7. 大数据之路week07--day07 (Sqoop 从mysql增量导入到HDFS)

    我们之前导入的都是全量导入,一次性全部导入,但是实际开发并不是这样,例如web端进行用户注册,mysql就增加了一条数据,但是HDFS中的数据并没有进行更新,但是又再全部导入一次又完全没有必要. 所以 ...

  8. 第3节 sqoop:6、sqoop的数据增量导入和数据导出

    增量导入 在实际工作当中,数据的导入,很多时候都是只需要导入增量数据即可,并不需要将表中的数据全部导入到hive或者hdfs当中去,肯定会出现重复的数据的状况,所以我们一般都是选用一些字段进行增量的导 ...

  9. Sqoop(四)增量导入、全量导入、减量导入

    增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数据,导入数仓后进行后续离线分析.这种情况下我们不可能将所有数据重新再导入一遍,所以此时需要数据增量导入. ...

随机推荐

  1. UVALive - 4255 - Guess (拓扑排序)

    Guess 题目传送:Guess 白书例题 注意拓扑排序时,,入度同一时候为0的前缀和须要赋值为同一个数(这个数能够随机取.由于前缀和是累加的,每个a的数值都仅仅和前缀和之差有关).,由于此时能够看成 ...

  2. hdu 4601 Letter Tree

    不easy啊.. 一个小错误让我wa死了.找了一个晚上,怎么都找不到 最后是对拍代码找到的错误.发现当步数比較小的时候答案就是对的,比較大的时候就不正确了 想到一定是什么地方越界了.. . power ...

  3. (1) yum源配置-epel

    1.获取epel地址 登录https://fedoraproject.org/wiki/EPEL/zh-cn,看“如何获取EPEL的软件包”,根据你的操作系统版本,复制对应的下载地址. 2.下载epe ...

  4. centos7 安装postgresql10

    https://blog.csdn.net/rudy5348/article/details/79299162

  5. java并发阻塞队列

    Java 并发编程利用 Condition 来实现阻塞队列 You are here:  开发&语言 - Java 文章 发布于 2017年06月26日  阅读 944 并发编程   什么是阻 ...

  6. C# .Net 下 x86使用大内存的处理

    /LARGEADDRESSAWARE 选项通知链接器应用程序可处理大于 2 GB 的地址. 在 64 位编译器中,默认情况下启用此选项. 在 32 位编译器中,如果未在链接器行上指定 /LARGEAD ...

  7. html5-补充知识

    原理 html5+开发app的原理大概是这样: html页面负责内容: ui负责页面样式: js负责调用原生app方法. html5 html5这部分负责页面,也就是app中你看到的东西,大概的架构和 ...

  8. 我为什么选择采用node.js来做新一代的EasyDarwin RTSP开源流媒体服务器

    在去年我们还未开始开发基于node.js的新版本EasyDarwin RTSP开源流媒体服务器的时候,我写了一篇博客<对EasyDarwin开源项目后续发展的思考:站在巨人的肩膀上再跳上另一个更 ...

  9. data standardization

    import random import numpy as np l, num, gen_min_, gen_max_ = [], 100, 1, 200 l = [random.randint(ge ...

  10. oschina git服务, 如何生成并部署ssh key

    1.如何生成ssh公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public ...