热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqoop根据时间增量导入

sqoop根据时间增量导入sqoop的基本功能大家应该都知道,实现关系型数据库和非关系型数据库的数据转换;官网http:arch
sqoop 根据时间增量导入

sqoop 的基本功能 大家应该都知道,实现关系型数据库和非关系型数据库的数据转换;
官网 http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html#_incremental_imports;

下面一段详细介绍了 sqoop 的增量导入;


7.2.7. Incremental Imports

Sqoop provides an incremental import mode which can be used to retrieve only rows newer than some previously-imported set of rows.

The following arguments control incremental imports:

Table 4. Incremental import arguments:

Argument Description
--check-column (col) Specifies the column to be examined when determining which rows to import.
--incremental (mode) Specifies how Sqoop determines which rows are new. Legal values for mode include append and lastmodified.
--last-value (value) Specifies the maximum value of the check column from the previous import.

Sqoop supports two types of incremental imports: append and lastmodified. You can use the --incremental argument to specify the type of incremental import to perform.

You should specify append mode when importing a table where new rows are continually being added with increasing row id values. You specify the column containing the row’s id with --check-column. Sqoop imports rows where the check column has a value greater than the one specified with --last-value.

An alternate table update strategy supported by Sqoop is called lastmodified mode. You should use this when rows of the source table may be updated, and each such update will set the value of a last-modified column to the current timestamp. Rows where the check column holds a timestamp more recent than the timestamp specified with --last-value are imported.

At the end of an incremental import, the value which should be specified as --last-value for a subsequent import is printed to the screen. When running a subsequent import, you should specify --last-value in this way to ensure you import only the new or updated data. This is handled automatically by creating an incremental import as a saved job, which is the preferred mechanism for performing a recurring incremental import. See the section on saved jobs later in this document for more information.


通过官网不难看出 sqoop 的增量导入需要三个参数 --check-column  --incremental --last-value 


时间增量举例:


首先数据库的数据如下图所示:



现在的时间是 8月27号。28,29 号 的日期是测试数据,观察结果使用;这里想实现的功能就是,每天12点导入一次数据,这样就得使用时间增量导入;

脚本如下:


    
    
#!/bin/bash
#Set the RDBMS connection params
rdbms_cOnnstr="jdbc:oracle:thin:@192.168.0.105:1521:ORCL"
rdbms_username="hbea"
rdbms_pwd="fulong"
#Set the source table in RDBMS
rdbms_table="action_log"
rdbms_columns="ACTION_TIME,USER_ID,RCOOKIE_ID,SESSION_ID,LOGIN_STATUS,USER_NEW_OR_OLD,ITEM_ID,ITEM_URL,ITEM_PRICE,ITEM_NUM,ORDER_TOTAL,ITEM_TYPE,ACTION_TYPE,SEARCH_WORD,SEARCH_USE_URL,SEARCH_USE_TITLE,NATION_ENGLISH,NATION_CHINESE,LOCATION_AREA_CODE,LOCATION_AREA_WORD,TERMINAL_SIZE,TERMINAL_TYPE,IP,LL_GRID,APP_SYSTEM_ID,OS,IF_FROMREC,EXPLORER,EQUIPMENT,PAGE_TYPE"
#Set the hive tables
hive_full_table="T_AC_RAW_ACTION_LOG"
hive_database="HEBEI_SP_RECS"
datenow=$(date -d last-day +%Y-%m-%d)
#---------------------------------------------------------
#Import init data in RDBMS into Hive
$SQOOP_HOME/bin/sqoop import --connect ${rdbms_connstr} --username ${rdbms_username} --password ${rdbms_pwd} --table ${rdbms_table} --columns "${rdbms_columns}" --hive-import   --hive-database ${hive_database}  --hive-table ${hive_full_table} --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-drop-import-delims –-check-column ACTION_TIME –-incremental lastmodified --last-value ${datenow}  -m 5  --split-by "RCOOKIE_ID";

红色部分就是 增量的一个参数  意思是 根据 action_time 去增量,时间增量  用lastmodified 这个参数,增量部分从 lastvalue开始,这里的datenow获取的是当天时间-1;到底这样当天时间-1会得到什么结果呢,下面来看一下脚本日志;


执行脚本,得到脚本有用信息:


 

从这里看出来 sqoop 是这样过滤数据的,使用的 action_time >= ${datenow} and action_time<当前时间 过滤出来的数据;

拿这句话到oracle执行,得到结果:




然后去hive 看一下结果 : 我的hive指向的是hdfs存储,所以这里我就不查询hive了,直接去hdfs 上看数据 



数据一致;

这里大家可以观察到 他并没有把数据库28,29 日期的数据给导入进去,说明他的增量时间指的结束时间就是当前时间!而不是所有大于${datenow}的时间;

还有一个问题就是,我想要的其实就是今天的数据,不包含26的数据,所以脚本中,可以吧datenow变量换成当天的时间;

datenow=$(date  +%Y-%m-%d)

再次执行


数据出来的就只有今天的时间;搞定OK;





推荐阅读
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了使用jQuery实现图片预加载和等比例缩放的方法,同时提供了演示和相关代码。该方法可以重置图片的宽度和高度,并使图片在水平和垂直方向上居中显示。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
author-avatar
做普通的自我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有