大数据全系列 教程
1869个小节阅读:465.6k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
相当用combiner。
默认情况下,Map阶段相同key发送到一个reduce,当某个key的数据过大时就会发生数据倾斜。
并不是所有的聚合都需要再reduce端完成,可以先在map端进行聚合,最后再在reduce端聚合。如同combiner。
通过设置以下参数开启在Map端的聚合
xxxxxxxxxx
#开启map端的聚合
set hive.map.aggr=true;
#相关参数:
hive.groupby.mapaggr.checkinterval;
map端group by执行聚合时处理的多少行数据(默认:100000)
hive.map.aggr.hash.min.reduction;
进行聚合的最小比例(预先对100000条数据做聚合,这100000条数据的体积若聚合之后的数据量/聚合前的值大于该配置0.5,则不会聚合)
hive.map.aggr.hash.percentmemory;
map端聚合使用的内存的最大值
hive.map.aggr.hash.force.flush.memory.threshold;
map端做聚合操作是hash表的最大可用内存,大于该值则会触发flush
hive.groupby.skewindata
是否对GroupBy产生的数据倾斜做优化,默认为false