【问题标题】:Total size of serialized results of tasks is bigger than spark.driver.maxResultSize任务序列化结果的总大小大于 spark.driver.maxResultSize
【发布时间】:2017-10-18 00:54:20
【问题描述】:

美好的一天。

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

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

你能给我一些关于如何解决这个问题的想法吗?

谢谢。

【问题讨论】:

  • 在我的例子中,我将 maxResultSize 增加到超过 1 gb,问题得到解决。您的任务大小为 5 GB。你可以尝试给 6 GB 一次吗?
  • 请出示代码...

标签: apache-spark pyspark


【解决方案1】:

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

【讨论】:

  • spark.shuffle.consolidateFiles 仅在您覆盖默认值以使用 HashShuffleManager 而不是在 Spark 1.2 (which defaults to spark.shuffle.manager=sort) 之后默认启用的默认 HashShuffleManager 时才会有所帮助,我认为甚至不适用到 Spark 2.x
猜你喜欢
  • 1970-01-01
  • 2016-03-06
  • 2018-06-08
  • 1970-01-01
  • 2019-04-03
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多