雖然這樣做對RDD的轉換,例如: -RDD改造和行動
firstRDD=spark.textFile("hdfs://...")
secondRDD=firstRDD.filter(someFunction);
thirdRDD = secondRDD.map(someFunction);
是否第一,第二和第三RDD存儲值在RAM或者當我們像result = thirdRDD.count()
最終thirdRDD執行行動,那麼它會存儲數據?
雖然這樣做對RDD的轉換,例如: -RDD改造和行動
firstRDD=spark.textFile("hdfs://...")
secondRDD=firstRDD.filter(someFunction);
thirdRDD = secondRDD.map(someFunction);
是否第一,第二和第三RDD存儲值在RAM或者當我們像result = thirdRDD.count()
最終thirdRDD執行行動,那麼它會存儲數據?
直到count
被調用,根本沒有處理。
任何操作都不會在內存中存儲任何數據,不包括count
所需的常量內存分配。
在count
期間物化的行可以立即丟棄並收集垃圾。
在任何情況下,只有在鏈中調用動作時,RDD纔會加載值。在這種情況下,只有在執行計數操作時才加載值,並且只加載數據,直到指定在「filter」功能內指定的條件爲止。
它不會加載數據並保存在內存中。它可以如果你調用方法堅持在一個RDD上。否則,它會在下次執行任何操作時從頭開始加載數據。
請讓我知道它是否有幫助。
好吧,這意味着firstRDD = spark.textFile(「hdfs:// ...」) 將文本文件存儲在RAM中? –
如果你不叫'堅持'firstRdd',它不會在RAM中存儲文本文件 – Sharad
好吧得到它謝謝:) 你知道火花獨立管理容錯的方式嗎? –
好吧,這意味着firstRDD = spark.textFile(「hdfs:// ...」) 不會將文本文件存儲在RAM中?這意味着在轉換中沒有內存讀/寫?在轉換某處它應該存儲操作員功能嗎? –
內存中,即RDD內部的數據儘可能多地(大小)和長(時間)地存儲在內存中。這裏是說RDD數據駐留在RAM中。 –