Spark:缓存要在另一个作业中使用的RDD

时间:2016-03-22 18:51:03

标签: apache-spark rdd

我正在运行一个带有输入的spark作业,该输入由同一个上一个作业生成。现在,作业将结果输出到HDFS以便下次运行读入,有没有办法将每个作业的输出缓存到spark中,以便后续运行不必从HDFS读取?

更新:或者是否可以在不同的应用程序之间共享RDD?

2 个答案:

答案 0 :(得分:5)

编辑:过时

不,在应用程序之间共享RDD是不可能的。

您必须将其保留在磁盘或数据库中。

答案 1 :(得分:5)

直接你无法做到这一点。但是,很少有解决方案可以帮助您。

正如@ morfious902002所提到的,你可以使用Alluxio(但是你需要在你的集群上安装它),它提供了一种分层存储(memory / hdfs / s3)。

另一种选择是使用spark-jobserver或者类似的,它们具有相同的spark上下文,你可以通过REST api将你的作业提交给这个服务器。由于所有工作都将在相同的长期生活环境下执行,因此您可以在工作之间共享RDD。