apache-spark - Spark 作业完成后,OFF_HEAP rdd 被 Tachyon 自动删除

标签 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

当坚持完成后,我可以从本地主机:19999(tachyon的Web UI)看到我的OFF_HEAP文件,这是我所异常(exception)的。

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

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

最佳答案

您正在寻找

  saveAs[Text|Parquet|NewHadoopAPI]File()

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

相反

persist()

用于RDD的中间存储:当spark进程结束时它们将被删除。以下是源代码注释:

  • Set this RDD's storage level to persist its values across operations after the first time it is computed.

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

关于apache-spark - Spark 作业完成后,OFF_HEAP rdd 被 Tachyon 自动删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29045681/

相关文章:

python - mllib NaiveBayes 中的类数量有限制吗?调用 model.save() 时出错

java - 如何在 Spark Java 中创建复杂的 StructType 架构

apache-spark - Apache Ignite 和 Tachyon 有什么区别

python - 如何在 Pyspark 中使用 Scala 类

python - 使用 pem key 和客户端证书的 KAFKA SSL 连接

apache-spark - 在 yarn 模式下提交作业到 Spark 时无法连接到 Spark 驱动程序

java - 尝试使用 Apache Spark Java API 透视表

apache-spark - Spark中的默认分区方案

hadoop - 带/不带 HDFS 的 Alluxio