数据倾斜笔记整理

数据倾斜笔记整理

其实数据倾斜,最根本的原因就是某个分区被分配了过多的数据,那么解决数据倾斜的本质就是减少该分区的数据量。

我们可以从下面几个思路上考虑解决方法。
第一、就是让该分区的数据被分配到其他分区,对应的方法如下表:

序号 方法 适用范围 备注
1. 增加Reduce个数 适用于多个Key对应大量数据且被分配到同一分区的情况 增加Reduce可以让MR的分区函数把这些Key对应的数据重新分配其他分区
2. 自定义Partitioner 适用于多个Key对应大量数据且被分配到同一分区的情况 目的是把原来分到一个分区的Key分到多个分区
3. 给Key增加随机数 适用于一个Key对应大量数据的情况 该方法需要在Reduce端进行随机数的去除操作

第二、就是提前进行聚合减少分区的数据

序号 方法 适用范围 备注
1. Map端combinner 适用非排重的计算,如count,sum等 如果是distinct并不适合这种方法

第三、其他方式方法

序号 方法 适用范围 备注
1. 数据分离处理 即把倾斜的数据拿出来单独处理 如访问日志有很多用户ID未0,则可以选择剔除、或抽离单独进行计算

PS:暂时就能想到这些,有遗漏或错误之处,欢迎指出,大家相互学习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容