2016-09-16 39 views
3

我有一個rdd List<JavaRDD<MyType>>的列表。列表中的每個rdd都緩存在內存中。Spark:unpersist rdd將其從列表中刪除列表

現在我想刪除其中的一個列表項。 我需要在.remove(index)之前撥打.unpersist()嗎?

如果「是」:因爲我知道.unpersist()使用懶惰評估。我是否需要執行一些操作然後移除該項目?看起來沒有多大意義。

請幫忙!

回答

0

我需要卸下襬臂之前調用.unpersist()就可以了(指數)

你可以和它可能是一個好主意,做它,但如果你不是會自動處理一個對象被垃圾收集。

我需要運行一些動作,然後刪除該項目

非也。在沒有被保留的RDD上調用unpersist沒有任何問題,如果沒有任何東西可以刪除,那對你更好。

+0

關於問題的第二個公園:我的意思是如果我在兌現的rdd上調用'unpersist' - 它何時會被實際執行? 'unpersist'也使用懶惰評估嗎?因爲我不想在'unpersist'之後在這個rdd上調用任何操作。 –

+0

這不是懶惰,但默認情況下它是異步的。如果你想確保它已經完成,使用阻塞版本'rdd.unpersist(true)'。 – zero323