序列化任務太大

學習如何當一個序列化任務太大磚。

寫的亞當Pavlacka

去年發表在:2023年3月15日

如果你看到下錯誤消息,你可以通過改變解決這個錯誤火花配置(AWS|Azure當你開始集群。

序列化任務XXX: XXX是XXX字節,超過最大允許:spark.rpc.message。最大尺寸(XXX字節)。考慮增加spark.rpc.message。最大尺寸或使用廣播變量為大值。

改變火花配置設置的屬性:

spark.rpc.message.maxSize

優化配置是一個選擇的時候,這個錯誤消息通常意味著你發送一些大型對象從司機到執行人,例如,電話並行化一個大名單,或將一個大R DataFrame DataFrame火花。

如果是這樣,我們建議首先審計代碼刪除你使用大型對象,或利用廣播變量。如果不解決這個錯誤,你可以增加分區號分裂大列表到多個小的減少引發RPC消息大小。

這裏是Python和Scala的示例:

Python

largeList = […)#這是一個很大的列表partitionNum = 100 #增加這個數量如果必要抽樣= sc.parallelize (largeList, partitionNum) ds = rdd.toDS ()
刪除

Scala

val largeList = Seq(…) / /這是一個大名單val partitionNum = 100 / /必要時增加這個數字val抽樣= sc.parallelize (largeList partitionNum) val ds = rdd.toDS ()
刪除

R用戶需要增加火花配置spark.default.parallelism增加在集群初始化分區號。你不能設置這個配置創建集群後。

這篇文章有用嗎?