ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据处理_HIVE增量ETL的一种方式

2021-02-23 23:01:56  阅读:169  来源: 互联网

标签:pt 分区 HIVE 修改 增量 数据处理 主键 ETL


适用场景:
贴源层主表历史数据过大,ETL不涉及历史数据对比或聚合
处理流程:
1.确定一个业务主键字段或物理主键字段
2.确定一个可以判断增量数据范围的字段,这取决于具体的业务场景,一般选用记录的创建时间或最后修改时间
3.确定一个分区字段,要求一段增量数据尽可能落在较少的分区,这里选用创建时间或最后修改时间的年月值
4.根据增量字段过滤主表,创建增量临时表
5.使用增量临时表完成要做ETL过程,得到一个增量结果表
6.获取增量结果表的分区字段Distinct值,存入一张表,下面把这些值简称为pt值,即partition值
7.将全量结果表(全量初始化过的)根据pt值过滤分区,再与增量结果表用业务主键full join,使用增量NVL字段优先取增量结果表上的,数据重新覆盖正式结果表分区。
8.代码案例后面会补充

不足点:不适用于源表经常修改历史数据的情况下,因为pt会跨越多个分区。如果同一记录修改不会反复多次修改,用最后修改时间可以优化这个问题

关于如何使用pt值过滤全量结果表:
pt值肯定要存入表
1.通过shell调用sql查询pt值,并解析返回内容,预处理好,然后作为执行参数传入到要执行的sql
2.使用where 分区字段 IN (子查询pt值),未验证,过滤性能可能有问题。

PS:贴源层一般会做ISU分区,增量表生成可以直接用I、S分区的,ISU分区会有补充贴

标签:pt,分区,HIVE,修改,增量,数据处理,主键,ETL
来源: https://blog.csdn.net/qq_29713449/article/details/114005032

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有