2015-10-18 58 views
3

我正在使用Spark 1.2.0並且沒有明確配置SPARK_LOCAL_DIRS,因此假設持久RDD將轉到/ tmp。我想堅持,並使用下面的代碼RDD:前保留後看不到Spark RDD

val inputRDD=sc.parallelize(List(1,2,3,3,4,5,6,7,8,9,19,22,21,25,34,56,4,32,56,70)) 
    val result = inputRDD.map(x=>x*x) 
    println("Result count is: "+result.count()) 
    result.persist(StorageLevel.DISK_ONLY) 
    println(result.collect().mkString(",,")) 
    println("Result count is: "+result.count()) 

我強迫計數()在我的RDD和堅持後,只是可以肯定的,但我仍然沒有看到任何新的文件或目錄中/ tmp目錄。當我運行我的代碼時,唯一更改的目錄是hsperfdata ....我知道它是針對JVM perf數據的。

我持續的RDD在哪裏?

+0

什麼是您的羣集配置? – eliasah

+0

我沒有配置羣集本身。使用IntelliJ for Scala並將Spark庫鏈接到我的項目。我還在學習,所以還沒有開始配置spark-env.sh文件。 –

+0

開始閱讀官方文檔!我相信你缺少一些基本的概念理解。 – eliasah

回答

0

scaladoc of RDD.persist()

設置此RDD的存儲級別後第一時間保存其整個操作的值是計算。如果RDD尚未設置存儲級別,則只能用於分配新的存儲級別。本地檢查點是一個例外。

所以,你叫result.count()以上result.persist()行,屆時星火已經設置result的堅持是默認的。刪除那count op並再試一次。

+0

我發現了這個問題。由於我在使用IDE,因此我的SparkContext在程序結束時被清除所有數據。在我嘗試堅持命令行(保持上下文活躍,我可以看到RDD) –

+0

我不認爲持久的RDD將持續超越運行你的程序,在REPL是有道理的,但在IDE中運行Scala是有意義的程序完成後它就消失了。檢查日誌,你可能會看到最後清理。你需要導出一個文本文件(或HDFS等)。 – JimLohse