Apache火花工作失败maxResultSize例外

学习如何当一个Apache火花工作失败maxResultSize例外。

写的亚当Pavlacka

去年发表在:2022年5月11日

问题

maxResultSize异常火花工作失败:

org.apache.spark。SparkException:工作阶段失败而终止:序列化的总大小

结果XXXX任务(X.0 GB)比spark.driver大。maxResultSize (X.0 GB)

导致

这个错误是因为配置的大小限制是超过。大小限制适用于总序列化结果引发的行为在所有分区。火花行为包括行为等收集()司机节点,toPandas (),或者一个大文件保存到本地文件系统。

解决方案

在某些情况下,您可能需要重构代码,以防止司机节点收集大量数据。您可以更改代码,这样司机节点收集的数据量有限或增加司机实例内存大小。例如你可以叫toPandas启用了箭头或写文件,然后读取这些文件,而不是收集大量数据驱动程序。

如果绝对必要你可以设置属性spark.driver.maxResultSize一个值< X > g高于价值在集群中的异常消息火花配置(AWS|Azure):

spark.driver.maxResultSize< X > g

默认值是4 g。有关详细信息,请参见应用程序属性

如果你设置一个上限,就会出现内存不足错误的驱动程序(取决于spark.driver.memory和JVM)中对象的内存开销。设置一个适当的限制,以防止出现内存不足的错误。

这篇文章有用吗?