hive中解决数据倾斜的思路
1.由key为null值造成的倾斜,将空置变成字符串加随机数
2.由group by造成的倾斜,map端聚合
set hive.groupby.skewindata=true;
hive.groupby.mapaggr.checkinterval = 100000 (默认)
hive.map.aggr.hash.min.reduction=0.5(默认)
3.控制reduce节点上的数据规模
set hive.optimize.skewjoin = true; — 优化歪斜:true
set hive.skewjoin.key = skew_key_threshold (default = 100000)— 歪斜键阈值,数据行数
行数超过阈值的reduce节点上就不再接收新数据,map端发送到其他reduce节点上去
下面是设置单个reduce节点上最大数据规模,也可以设置reduce节点个数,根本目的和上面是一样的,不要让单台reduce上有太多数据
set hi