数据处理_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分区会有补充贴

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值