SQL累计全量的两种方式

在利用sql对数据进行累全量时,通常我们会使用两种方式:

方式一:(全量表 - 增量表) | 增量表

使用left join,t-2全量差集t-1增量数据,再union all增量数据(t-1),得到t-1的全量数据
在这里插入图片描述
方式二:使用union all + groupby 改写
在这里插入图片描述

相关计算耗时测试如下(hive引擎):

在这里插入图片描述

区别:

  1. left join方式,使用了两段MR,而groupby方式只有一段MR
  2. groupby方式每max一个字段都是在增加cpu开销,而left join实现方式不存在该问题

如果除了分组字段(唯一),其他字段1-3个,数据量不大,建议使用groupby方式;其他建议使用left join做差集再合并实现;

当数据量map端聚合没有什么效果时,应关闭该参数:set hive.map.aggr=false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值