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

sqoop增量导入且表无主键

之前写过一个sqoop增量导入的文章http:blog.csdn.netqq_20641565articledetails52763663,自己控制增量导入,但是那个架构需要表有主键值

之前写过一个sqoop增量导入的文章http://blog.csdn.net/qq_20641565/article/details/52763663,自己控制增量导入,但是那个架构需要表有主键值,但是一般在实际中有的表却没有主键只有增量字段而且数据量特别大,这样的情况就不能使用之前那篇文章写的方式自己控制增量同步数据了,可以用如下的方法解决。

1.使用sqoop的增量导入;
这里就不介绍了,网上有很多例子。

2.根据上一篇文章的架构,根据增量字段导入

其实这种方式和直接使用sqoop自带的增量导入效果一样,但是为了规范化流程(因为都是通过公共shell脚本,从前台取参数执行),所以使用以下方式增量导入

中间表和最终表结构如下:

create table test_temp (
name string,
addr string
update_time string
) comment '临时表'
partitioned by (y string,m string,d string)
row format delimited fields terminated by ','
stored as textfile

create table test (
name string,
addr string
update_time string
) comment '最终表'
row format delimited fields terminated by ','
stored as orcfile

将之前那片文章中的 “6.合并” 步骤改为如下代码(如果是增量更新10月09的数据):

#其中
startdate="20161009"
enddate="20161010"

insert overwrite table test
select
a.name,a.addr,a.update_time
from
test
where
a.update_time >= ${enddate} or a.update_time <${startdate}


--把中间表的数据 into 到test表中
insert into table test select name,addr,update_time from test_temp where y='2016' and m='10' and d='09';

但是这样有个弊端:

如果前面数据有修改,这样不能去重!和sqoop自带的同步一样,如果想修改历史数据后还能去重,就参照上一篇文章http://blog.csdn.net/qq_20641565/article/details/52763663;


之后又有一个需求,需要流式导入数据,意思就是hive里面的数据只有当天前30天的增量更新(比如7月1号的时候,test表只有6月1号到6月30号的数据,到7月2号的时候,test表只有6月2号到7月1号的数据,以此内推)可以按照如下方式解决:

#先定义一个dateMonth
dateMOnth==$(date -d "30 days ago" +%Y%m%d)
#这里先写死,正常流程是从控制台传入参数
startdate="20161009"
enddate="20161010"
#
insert overwrite table test
select
a.name,a.addr,a.update_time
from
test
where
a.update_time >= ${enddate} or a.update_time <${startdate}
and a.update_time >= ${dateMonth}

#把中间表的数据 into 到test表中
insert into table test select name,addr,update_time from test_temp where y='2016' and m='10' and d='09';

按照如上方式就能按照天增量导入数据,并保持数据为最新的30天的数据。

标记下:
一个表92个字段 2千万数据 大概20G
一个表26个字段 1亿条数据 大概20G;2亿4千万 大概53G


推荐阅读
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
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社区 版权所有