在火花工作完成后,Tachyon自动删除了OFF_HEAP rdd

时间:2015-03-14 05:07:31

标签: apache-spark rdd alluxio

我运行一个spark应用程序,它使用StorageLevel.OFF_HEAP来持久化rdd(我的tachyon和spark都处于本地模式)。

像这样:

val lines = sc.textFile("FILE_PATH/test-lines-1")
val words = lines.flatMap(_.split(" ")).map(word => (word, 1)).persist(StorageLevel.OFF_HEAP)
val counts = words.reduceByKey(_ + _)
counts.collect.foreach(println)
...
sc.stop

当坚持完成后,我可以从localhost:19999(tachyon的网页用户界面)看到我的OFF_HEAP文件,这就是我的例外情况。

但是,在火花应用程序结束后(sc.stop,但是tachyon工作),我的块(OFF_HEAP rdd)被删除了。我无法从localhost:19999找到我的文件。这不是我想要的。 我认为这些文件在persist()方法之后属于Tachyon(不是spark),它们不应该被删除。

那么,谁删除了我的文件,何时? 这是正常的方式吗?

1 个答案:

答案 0 :(得分:2)

您正在寻找

  saveAs[Text|Parquet|NewHadoopAPI]File()

这是您需要的真正“持久”方法。

相反

persist()

用于RDD的中间存储:当火花过程结束时,它们将被移除。这是源代码注释:

  
      
  • 设置此RDD的存储级别,以便在第一次操作后将其值保持在操作之间   它是计算的。
  •   

重要的短语是 跨操作 - 这是处理(仅限)的一部分。