热门标签 | 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;





推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • Oracle 用户锁定问题及解决方法
    本文介绍了如何在 Oracle 数据库中检查和处理用户锁定问题,包括查询被锁定的用户、解锁用户以及调整登录失败次数限制的方法。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 通过优化动态网络Cookies的全网互通机制,实现了用户在任意子站点的登录和注销操作均能同步至整个网络。具体实现涉及对三个关键文件的修改:首先,在`incDv_ClsMain.asp`中定位并调整`Response.Cookies`的相关设置;其次,更新`global.asa`以确保会话状态的一致性;最后,修改`login.asp`以支持跨域认证。这一改进不仅提升了用户体验,还增强了系统的安全性和可靠性。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 在多堆石子游戏中,通过分析Nim博弈策略,探讨了如何在限定时间和内存条件下实现最优解。本文详细研究了石子游戏中的数学原理和算法优化方法,旨在为参与者提供有效的策略指导。具体而言,文章讨论了不同堆数下的Nim值计算及其应用,帮助玩家在复杂的博弈环境中取得优势。 ... [详细]
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社区 版权所有