数据倾斜是指在并行计算模式下(hadoop 的map-reduce 框架下,数据被切分为N个片段,分发到不同的计算节点上,单独计算),单个计算节点获得的数据量远远大于其他节点,造成该节点计算压力过大,导致计算效率下降或计算内存溢出。这个现象就是数据倾斜。 同工不同酬。
解决这个问题的办法一般是:
1 .对数据集重新分区,增大分区数量,使得每个分区记录数尽量相等
2、给数据增加随机id,按这个id重新分区;
3、给数据 “加盐”一种生成均匀分布的id值的机制。重分区
4、对造成数据集中的超级节点id,进行过滤,单独处理这样的节点。如,模电商的电话每天有数万订单,这个电话关联的业务数据就容易造成数据倾斜
推荐书籍: spark 快速大数据分析(第二版)