是的,不知道在這種情況下是非常有用的。任何解釋嗎?
這是一個通用的問題。
廉價的解決方案是增加數量的洗牌分區(以防載荷傾斜)或重新啟動集群。
安全解決方案是增加集群大小或節點大小(SSD、RAM…)
最終,你必須確保你有高效的代碼。你讀和寫(不要保持在內存中,而是過程像一個流管道從源到彙)。重新分區可以打破這種效率。
還要確保你不是重寫緩存變量。例如下麵的代碼是錯誤的:
df =…緩存()
df = df.withColumn (…. .) .cache ()
而不是把一個unpersist兩國行。否則是孤兒引用緩存數據。