Spark 3.1.1版本运行10T大数据集时,偶现OneForOneBlockFetcher相关错误的解决方法
问题现象描述
在Spark 3.1.1版本中,大数据集是10TB数据集,如果spark.network.timeout设置过小,可能会导致Shuffle过程中Fetch数据超时触发OneForOneBlockFetcher相关错误以及数据结果可能不一致。
关键过程、根本原因分析
10TB数据集下,spark.network.timeout默认为120s,在Shuffle阶段数据Fetch出现异常比如超时会重新Fetch,在这个阶段,因为数据的blockid错乱导致Fetch的数据错乱,从而可能概率性出现数据不一致问题,这是Spark社区代码问题(这是Spark社区代码的Bug,由https://github.com/apache/spark/pull/31643修复)。
结论、解决方案及效果
考虑将spark.network.timeout调大避免Fetch数据超时,推荐设为600,可解决本例中问题。
父主题: OmniOperator算子加速