在spark中,我想知道下一個RDD實現時以前的RDD會發生什麼。當下一個RDD實現時,以前的RDD會發生什麼?
讓說我有下面的Scala代碼
val lines = sc.textFile("/user/cloudera/data.txt")
val lineLengths = lines.map(s => s.length)
val totalLength = lineLengths.reduce((a, b) => a + b)
我linesRDD是基本RDD 和同樣地,我有linesLengths RDD
我知道這兩個RDD被物化時減少操作調用。
我的問題是,雖然數據流經這2個RDD,但當linesLengthRDRD變爲物化時,linesRDD會發生什麼情況。
一旦linesLengthsRDD得到物化,那麼linesRDD裏面的數據會被刪除嗎?
假設在生產點火作業可能有100個RDD,單個動作被稱爲第100個RDD。
當第99個RDD實現時,第1個RDD中的數據會發生什麼變化?
所有RDD中的數據都被刪除,只有各自的最終Action返回相應的輸出?
或者在每個RDD
數據被自動解除一旦RDD它的數據傳遞到其下一個RDD按DAG?
我沒有在任何RDD上應用任何緩存操作。那麼line和lineLength都會在reduce之後保存它們的rdd DATA?我的問題是關於數據在RDD的 –
所有關於他們將保持不變,因爲他們在減少之前。他們實際上並不持有這些數據。僅當提交操作並將其分配給某個變量時纔會檢索數據。 –
是的。當你調用一個Action時,spark會從源位置讀取數據並通過所有轉換。這意味着每個轉換的每個RDD都得到了實現。我的問題是,每個RDD是否保留數據,直到動作返回一些輸出爲止或每個RDD刪除保留的數據,只要它發送數據到下一個RDD? –