美好的一天。
我正在运行用于解析某些日志文件的开发代码。如果我尝试解析较少的文件,我的代码将顺利运行。但是当我增加需要解析的日志文件的数量时,它将返回不同的错误,例如too many open files
和Total size of serialized results of tasks is bigger than spark.driver.maxResultSize
。
我尝试增加spark.driver.maxResultSize
,但错误仍然存在。
您能否就如何解决此问题向我提出任何想法?
感谢。
答案 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