Spark:缓存RDD以用于另一个作业
Spark: cache RDD to be used in another job
我正在 运行ning 一个接受输入的 spark 作业,该输入是由之前的同一个作业生成的。现在作业将结果输出到 HDFS 以供下一次 运行 读入,有没有办法将每个作业的输出缓存在 spark 中,以便以下 运行 不必从 HDFS 读取?
更新:或者spark是否可以在不同应用之间共享RDD?
编辑:已过时
不,不能在应用程序之间共享 RDD。
您必须将其保存在磁盘或数据库中。
直接你是做不到的。但是,很少有解决方案可以帮助您。
如@morfious902002 所述,您可以使用 Alluxio(但您需要将其安装在您的集群上),它提供了一种分层存储(memory/hdfs/s3)。
另一种选择是使用 spark-jobserver 或类似的东西,它们具有相同的 spark 上下文,并且您可以通过 REST api 将作业提交到此服务器。由于所有作业都将在相同的长期环境下执行,您将能够在作业之间共享 RDD。
我正在 运行ning 一个接受输入的 spark 作业,该输入是由之前的同一个作业生成的。现在作业将结果输出到 HDFS 以供下一次 运行 读入,有没有办法将每个作业的输出缓存在 spark 中,以便以下 运行 不必从 HDFS 读取?
更新:或者spark是否可以在不同应用之间共享RDD?
编辑:已过时
不,不能在应用程序之间共享 RDD。
您必须将其保存在磁盘或数据库中。
直接你是做不到的。但是,很少有解决方案可以帮助您。
如@morfious902002 所述,您可以使用 Alluxio(但您需要将其安装在您的集群上),它提供了一种分层存储(memory/hdfs/s3)。
另一种选择是使用 spark-jobserver 或类似的东西,它们具有相同的 spark 上下文,并且您可以通过 REST api 将作业提交到此服务器。由于所有作业都将在相同的长期环境下执行,您将能够在作业之间共享 RDD。