使用hive的过程中,我们习惯性用set hive.groupby.skewindata=true来避免因数据倾斜造成的计算效率问题,但是每个设置都是把双刃剑,最近调研了下相关问题,现总结如下:
- 从下表可以看出,skewindata配置真正发生作用,只会在以下三种情况下,能够将1个job转化为2个job:
select count distinct ... from ...
select a,count(*) from ... group by a
select count(*),count(distinct ...) from
- 其中,该设置下会出现的错误的是:
select a,count(*),count(distinct...) from ... group by a
解决方案,需要将语句修改为: