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)中對象的內存開銷。設置一個適當的限製,以防止出現內存不足的錯誤。