Spark数据倾斜原因及解决方法

Spark数据倾斜原因
1、数据倾斜只会发生在Shuffle过程,Shuffle时需将各节点的相同key的数据拉取到某节点上的一个task来处理,比如大部分key对应10条数据,小部分key对应10万条,那就会发生数据倾斜
2、shuffle并行度不够

解决办法
首先要定位问题,看数据倾斜发生在哪个Stage,这个可以查看日志或者web ui(8080端口),主要看最慢的Stage各task分配的数据量,然后根据Stage划分,推算发生数据倾斜的代码。(必然有Shuffle类算子 …bykey,join,distinct,repartition等)。
如果是代码的问题,可以对代码进行优化,比如用map join 代替reduce join,如果是聚合类算子,先局部聚合再全局聚合(对key加随机数前缀进行聚合,去掉前缀再聚合)。
如果是数据的问题,可以用filter过滤掉异常的key。
如果是并行度不够的问题,可以提高shuffle write和shuffle read的并行度。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值