浅谈离线数据倾斜
原文中文,约8100字,阅读约需20分钟。发表于: 。用最通俗易懂的话来说,数据倾斜无非就是大量的相同key被partition分配到一个分区里,造成了'一个人累死,其他人闲死'的情况,这种情况是我们不能接受的,这也违背了并行计算的初衷,首先一个节点要承受着巨大的压力,而其他节点计算完毕后要一直等待这个忙碌的节点,也拖累了整体的计算时间,可以说效率是十分低下的
本文介绍了优化大数据平台中的数据倾斜问题,包括增加内存、增加reduce个数、自定义分区、重新设计key和使用combinner合并等方法。同时,通过观察Spark UI定位问题,并通过参数调节和SQL语句调节来解决Hive数据倾斜问题。对于Shuffle时数据不均匀导致的数据倾斜,可以采用打散key进行二次聚合、改变join方式、开启spark自适应框架、优化SQL等方法来解决。Spark 3.0中提供了通用倾斜算法来处理更多场景的数据倾斜问题。