spark-遇到问题小结

   经常会遇到 类似 org.apache.spark.shuffle.FetchFailedException: java.io.FileNotFoundException 。主要是shuffle 导致内存不足引起的。shuffle 分为 shuffle read 和write 。 

  1. shuffle read 是读其它partition 发来的数据,从缓存中读。

  2. shuffle write 是写数据到缓存准备发给其他partition。

  当数据分片partition过多而且每个partition的大小很小的时候,当这个时候触发shuffle就会有大量的网络io和shuffle read 的操作。这时候要通过coalesce 或repartition在之前的某一步提前把数据进行合并,来防止产生过多partition。

  当数据分片不多而每个partition很大的时候,这时候要是shuffle也会造成大量的shuffle read 和write操作,而导致内存不足,这时候也需要通过coalesce 或repartition在之前的某一步提前把数据打散放小。

  为什么会出现这样情况呢,应该是数据的partition的数量决定了task的数量。所以经常在调优的时候,经常要注意每一步shuffle后数据partition的大小和partition的数量。这个要从executor的内存,shuffle read 、write的大小来看。

转载于:https://www.cnblogs.com/parkin/p/8405619.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值