任务序列化结果的总大小大于spark.driver.maxResultSize

时间:2017-10-16 04:58:24

标签: apache-spark pyspark

美好的一天。

我正在运行用于解析某些日志文件的开发代码。如果我尝试解析较少的文件,我的代码将顺利运行。但是当我增加需要解析的日志文件的数量时,它将返回不同的错误,例如too many open filesTotal size of serialized results of tasks is bigger than spark.driver.maxResultSize

我尝试增加spark.driver.maxResultSize,但错误仍然存​​在。

您能否就如何解决此问题向我提出任何想法?

感谢。

Sample Error

1 个答案:

答案 0 :(得分:8)

Total size of serialized results of tasks is bigger than spark.driver.maxResultSize表示当执行程序尝试将其结果发送给驱动程序时,它超过spark.driver.maxResultSize。可能的解决方案如上所述由@mayank agrawal继续增加它直到你让它工作(如果执行者试图发送太多数据,则不是推荐的解决方案)。

我建议查看你的代码,看看数据是否有偏差导致其中一个执行者完成大部分工作,从而导致大量数据输入/输出。如果数据偏斜,您可以尝试repartitioning

对于太多的打开文件问题,可能的原因是Spark可能在shuffle之前创建了许多中间文件。如果在执行程序/高并行性或唯一键中使用了太多核心(在您的情况下可能的原因 - 大量输入文件),可能会发生这种情况。需要考虑的一个解决方案是通过此标记合并大量中间文件:--conf spark.shuffle.consolidateFiles=true(当您执行spark-submit时)

要检查的另一件事是此主题(如果与您的用例类似):https://issues.apache.org/jira/browse/SPARK-12837