現在我正在學習如何使用spark.I有一段代碼可以將一個矩陣反轉,並且當矩陣的順序像100這樣小時它就能工作。但是當矩陣的順序是大如2000我有一個這樣的例外:Spark:java.io.IOException:設備上沒有剩餘空間
15/05/10 20:31:00 ERROR DiskBlockObjectWriter: Uncaught exception while reverting partial writes to file /tmp/spark-local-20150510200122-effa/28/temp_shuffle_6ba230c3-afed-489b-87aa-91c046cadb22
java.io.IOException: No space left on device
在我的節目,我有很多行這樣的:
val result1=matrix.map(...).reduce(...)
val result2=result1.map(...).reduce(...)
val result3=matrix.map(...)
(很抱歉,因爲代碼是要寫很多的)
所以我認爲當我這樣做的時候Spark創建了一些新的rdds,並且在我的程序中Spark創建了太多的rdds,所以我有例外。我不確定我認爲是否正確。
如何刪除不再使用的rdds?像result1和result2?
我試過rdd.unpersist(),它不起作用。
非常感謝。
我可能是錯的,但通常火花會將所有內容都保存在內存中,如果它填滿了您的硬盤驅動器,可能您沒有給他足夠的內存來開始。無論如何,你不能刪除你認爲你不再使用的RDD。 –
你不應該刪除它們。 Result_i只保留計算result_ {i + 1}所需的時間(它仍然可以存儲但可以被覆蓋)。有可能你不能從你的一個計算中存儲臨時文件。 – abalcerek
但我不是爲什麼我有IOException表示沒有空間留在設備上... –