[toc]
1.介绍,原理,原因
见 hive中的数据倾斜
2. 解决方案
++自定义分区++,这需要用户自己继承partition类,指定分区策略,这种方式效果比较显著。
重新设计key,++有一种方案是在MAP阶段时给KEY加上一个随机数++,有了随机数的key就不会被大量的分配到同一节点(小几率),++待到REDUCE后再把随机数去掉++即可。(大表连接大表的情况可以用)
++使用combinner合并++,combinner是在map阶段,reduce之前的一个中间阶段,在这个阶段可以选择性的把大量的相同key数据先进行一个合并,可以看做是local reduce,然后再交给reduce来处理,这样做的好处很多,即减轻了map端向reduce端发送的数据量(减轻了网络带宽),也减轻了map端和reduce端中间的shuffle阶段的数据拉取数量(本地化磁盘IO速率)
原文链接:https://blog.csdn.net/weixin_35353187/article/details/84303518