需求:redis缓存的数据隔段时间往MySQL中写入一次。如果按照job的增量导入,比如上次redis向mysql导入数据时间为8:00,下一次导入时间为9:00,8:20sqoop进行增量导入,导入的时*~8:20的数据,sqoop把job中的最后导入时间设置为8:20。当9:00redis向mysql再次导入数据,9:20sqoop会将mysql中8:20~9:20数据导入到hive中,那么8:00~8:20的数据没有导入到hive中。

1、批量创建sqoop job:

#!/bin/bash
set -e #create sqoop jobs
ret=$(cat tables|wc -l) #tables中存放所有表名
i=1 while [ $i -le $ret ]
do
row=$(sed -n "$i,0p" tables)
sqoop job --create "incre_"$row -- import --connect jdbc:mysql://10.9.1.19:3306/db --table $row --username root --password root -m 1 --hive-import --incremental lastmodified --check-column dtTime --last-value '2015-12-02 10:59:56.0'
#此处last--value可以随意指定
i=`expr $i + 1`
done
sqoop job --list

2、批量删除job

#!/bin/bash
set -e #create sqoop jobs
ret=$(cat tables|wc -l)
i=1
while [ $i -le $ret ]
do
row=$(sed -n "$i,0p" tables)
sqoop job --delete "incre_"$row
i=`expr $i + 1`
done
sqoop job --list

3、查询最后导入到hive中数据的dtTime值

自动增量导入,实现按照某个字段在hive中最后的值开始的导入,而不是按saved job中指定的值

#获取所有tables文件中指定的表的最后dtTime值,并修改sqoop  job的元数据,最后执行job
#!/bin/bash
set -e
#set -x source ~/.bash_profile
SQOOP_METASTORE=/usr/local/sqoop-1.4.6/metastore/meta.db.script
ret=$(cat tables|wc -l)
i=1
while [ $i -le $ret ]
do
row=$(sed -n "$i,0p" tables)
JOB_NAME="incre_"$row
lastedate=$(hive -e "select max(dtTime) from $row")
echo "lastest time:"$lastedate>>/data/incre.log.d/$JOB_NAME.log
#将时间中的.0替换为.1
newdate=$(echo $lastedate|sed 's/\.0/.1/g')
echo "beginning time:"$newdate>>/data/incre.log.d/$JOB_NAME.log
#替换sqoop的元数据
#cat $SQOOP_METASTORE|grep "'$JOB_NAME','incremental.last.value'"|sed "s/20.*-.*.0/$ret/g"
sed -i "s/'$JOB_NAME','incremental.last.value','.*','SqoopOptions'/'$JOB_NAME','incremental.last.value','$newdate','SqoopOptions'/g" $SQOOP_METASTORE
cat $SQOOP_METASTORE|grep "'$JOB_NAME','incremental.last.value'">>/data/incre.log.d/$JOB_NAME.log
sqoop job --exec $JOB_NAME
i=`expr $i + 1`
done

Sqoop实现自定义job的增量导入的更多相关文章

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

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

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

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

  3. sqoop定时增量导入导出

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

  4. Sqoop增量导入

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

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

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

  6. sqoop job 增量导入

    使用sqoop job做增量导入 在执行导入模式为 incremental 的sqoop job 时,sqoop会获取上次导入操作的 –check-column的value值,也就是说使用sqoop ...

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

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

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

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

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

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

随机推荐

  1. Restfull API 示例

    什么是Restfull API Restfull API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest rest 不是一个技术,也不是一个协议 rest 指的是一组架构约束条件 ...

  2. DBA常用SQL之数据库基础信息

    第一部分: 1. 查看oracle最大连接数 sql>show parameter processes #最大连接数 2. 修改最大连接数 sql>alter system set pro ...

  3. elasticsearch 跨网段组集群

    elasticsearch 是非常流行的全文搜索引擎,但网上的教程多是初次使用,并没有一些高级用法demo.这次遇到需要跨网段组网问题,自己摸索了文档很久,发现确实可行,于是着手做了个实验,最终实验成 ...

  4. 配置Windows Server2008+iis+php+mysql所需下载安装包

    最近一个朋友让我帮忙给配置服务器iis+php+mysq 环境,遇到了很多问题,特此就在这里说一下.小弟只是在windwos2003 和windwos XP下配置过iis+php+mysql,去朋友那 ...

  5. jquery 设置select 默认值

    $('#@(Perfix)OrgType').children("option").each(function () { var temp_value = $(this).val( ...

  6. 带Cookie的 WebClient

    /// <summary> /// WebClient的扩展 /// </summary> public class webClient : WebClient { /// & ...

  7. windows 2003 上安装windows liver writer

    下载"resource hacker"软件,修改exe文件,找到config--config0-0 替换为: <?xml version="1.0" en ...

  8. Silverlight开源框架SL提供便捷的二次开发银光框架

    Silverlight开发框架SilverFrame欢迎咨询 基于Silverlight4.0开发,兼容Silverlight 5.0,SQLServer2005数据库.WCF: 本框架有清爽的前端界 ...

  9. C# .net 最大HTTP连接数

    说明:本WCF程序收到请求时会对外HTTP请求. 桌面系统默认是2个,如果是SERVER,默认是10个,超过10个就会排队,当有大量向外请求时,很多对外请求就会超时.排队的HTTP请求超时仍在计时. ...

  10. CSS媒体查询(@media)

    @media only screen and (max-width: 500px) { .gridmenu { width:100%; } .gridmain { width:100%; } .gri ...