SQL累计全量的两种方式

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

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

使用left join,t-2全量差集t-1增量数据,再union all增量数据(t-1),得到t-1的全量数据
SQL累计全量的两种方式_第1张图片
方式二:使用union all + groupby 改写
SQL累计全量的两种方式_第2张图片

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

SQL累计全量的两种方式_第3张图片

区别:

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

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

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

你可能感兴趣的:(HIVE,SQL,sql,hive,大数据)