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

elg*_*oog 4 apache-spark rdd

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

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

Igo*_*man 6

您直接无法实现这一目标。但是,几乎没有解决方案可以为您提供帮助。

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

另一个选择是使用具有相同spark上下文的spark-jobserver或类似工具,然后通过REST api将作业提交到此服务器。由于所有作业将在相同的长期环境下执行,因此您将能够在作业之间共享RDD。


eli*_*sah 5

编辑:过时

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

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

  • 您可以使用Alluxio将其保留在内存中,以更快地读取第二份作业。 (2认同)