2017-10-16 134 views
0

美好的一天。任务的序列化结果的总大小大于spark.driver.maxResultSize

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

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

你能告诉我如何解决这个问题吗?

谢谢。

Sample Error

+0

在我的情况,我增加maxResultSize超过1 GB比需求和问题解决。你的任务大小是5 GB。你可以尝试给6 gb一次吗? –

+0

请显示代码... –

回答

0

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

我会建议看看你的代码,看看数据是否倾斜使得执行程序之一执行大部分导致大量数据输入/输出的工作。如果数据偏斜,你可以尝试repartitioning它。

对于打开文件太多的问题,可能的原因是Spark可能在洗牌之前创建了一些中间文件。如果在执行程序中使用太多的内核/高并行性或唯一键(在您的情况下可能的原因 - 大量输入文件),可能会发生这种情况。寻找到一个解决方案是通过这个标志合并的中间文件数量庞大:--conf spark.shuffle.consolidateFiles=true(当你做​​)

一件事是检查这个线程(如果类似于你的使用情况的东西):https://issues.apache.org/jira/browse/SPARK-12837

相关问题