2017-08-27 38 views
0

雖然這樣做對RDD的轉換,例如: -RDD改造和行動

firstRDD=spark.textFile("hdfs://...") 

secondRDD=firstRDD.filter(someFunction); 

thirdRDD = secondRDD.map(someFunction); 

是否第一,第二和第三RDD存儲值在RAM或者當我們像result = thirdRDD.count()最終thirdRDD執行行動,那麼它會存儲數據?

回答

2
  • 直到count被調用,根本沒有處理。

  • 任何操作都不會在內存中存儲任何數據,不包括count所需的常量內存分配。

  • count期間物化的行可以立即丟棄並收集垃圾。

+0

好吧,這意味着firstRDD = spark.textFile(「hdfs:// ...」) 不會將文本文件存儲在RAM中?這意味着在轉換中沒有內存讀/寫?在轉換某處它應該存儲操作員功能嗎? –

+0

內存中,即RDD內部的數據儘可能多地(大小)和長(時間)地存儲在內存中。這裏是說RDD數據駐留在RAM中。 –

0

在任何情況下,只有在鏈中調用動作時,RDD纔會加載值。在這種情況下,只有在執行計數操作時才加載值,並且只加載數據,直到指定在「filter」功能內指定的條件爲止。

它不會加載數據並保存在內存中。它可以如果你調用方法堅持在一個RDD上。否則,它會在下次執行任何操作時從頭開始加載數據。

請讓我知道它是否有幫助。

+0

好吧,這意味着firstRDD = spark.textFile(「hdfs:// ...」) 將文本文件存儲在RAM中? –

+0

如果你不叫'堅持'firstRdd',它不會在RAM中存儲文本文件 – Sharad

+0

好吧得到它謝謝:) 你知道火花獨立管理容錯的方式嗎? –