是什么导致了火花驱动程序的maxResultSize限制



在我的Spark作业中,我发送给驱动程序的结果只有几个KB。尽管spark.driver.maxResultSize设置为4 GB,但我仍然得到以下异常:

ERROR TaskSetManager: Total size of serialized results of 3021102 tasks (4.0 GB) is bigger than spark.driver.maxResultSize (4.0 GB)

Spark累加器或其他任何东西对spark.driver.maxResultSize分配的内存使用率有贡献吗?是否有我可以参考的官方文档/代码来了解更多信息?

有关代码/执行的更多详细信息:

  1. 有300万个任务
  2. 每个任务从S3读取50个文件,并在转换后将它们重新写入S3
  3. 任务返回S3文件的前缀以及一些元数据,这些元数据在驱动程序处收集以保存到文件中。该数据是<50 MB

这个问题在这里已经解决:原因是当Spark计算结果大小时,它实际上还计算发送回驱动程序的任务二进制结果中的元数据(如度量(。因此,如果你有大量的任务,但几乎什么都没有收集(真实的数据(,你可能仍然会遇到错误。

最新更新