group by 操作:
1,Map端聚合:Map端进行部分聚合
hive.map.aggr用于设定是否在Map端进行聚合,默认hive.map.aggr=true,version:0.10.0
另外,hive.groupby.mapaggr.checkinterval=100000用于设定Map端进行聚合的操作条目
2,数据倾斜:
hive.groupby.skewdata设定是否在数据分布不均衡,即发生倾斜时进行负载均衡,当选项为hive.groupby.skewdata=true时,生成的查询计划会有两个MapReduce,在第一个MapReduce中,Map的输出结果会随机地分不到Reduce中,对Reduce做部分聚合操作并输出结果,是相同的Group by key有可能分发到
不同的reduce中,从而达到负载均衡的目的,第二个MapReduce任务在根据预处理的数据按照Group by key分不到Reduce中(保证Group by key 分布同一个Reduce),最后完成最终的聚合操作
本文介绍了Hive中Group By操作的两种优化方式:Map端聚合与数据倾斜处理。通过调整参数hive.map.aggr和hive.groupby.skewdata,可以在Map阶段进行部分聚合减少Shuffle量,并针对数据分布不均衡的情况实现负载均衡。
519

被折叠的 条评论
为什么被折叠?



