Hive数据倾斜以及资源分配
① Group By 中的计算均衡优化
1. map端聚合
-
原理
combiner 操作 – 目的: 减少shuffle的数据量
-
场景
groupby_key 在map端数据有大量重复的时候, 就需要开启。
如果groupby_key 是用户id, 几乎不会有重复的时候,就不需要开启,否则还会浪费资源
-
使用
set hive.map.aggr=true;
默认开启如何灵活控制关掉map聚合的策略:
set hive.groupby.mapaggr.checkinterval = 100000;
set hive.map.aggr.hash.min.reduction=0.5
Map开始的时候先尝试给前100000 条记录做hash聚合,如果聚合后的记录数/100000>0.5说明这个groupby_key没有什么重复的,再继续做局部聚合没有意义,100000 以后就自动把聚合开关关掉。