2016-01-19 51 views
2

在两个spark任务之间共享spark RDD数据的最佳方式是什么?如何在两个应用程序之间共享Spark RDD的数据

我有一个案例,其中工作1:Spark Sliding窗口流应用程序,将定期使用数据并创建RDD。这我们不想坚持存储。

作业2:查询将访问在作业1中创建的相同RDD并生成报告的作业。

我已经看到很少的疑问,他们建议SPARK作业服务器,但因为它是一个开源不知道它是否可能的解决方案,但任何指针都会有很大的帮助。

谢谢!

回答

2

简短的回答是你不能在作业之间共享RDD。您可以共享数据的唯一方法是将该数据写入HDFS,然后在其他作业中提取数据。如果速度是一个问题,并且您希望保持恒定的数据流,则可以使用HBase,这将允许从第二个作业进行非常快速的访问和处理。

为了得到一个更好的主意,你应该看看这里:

Serializing RDD

0

根据官方文档描述:

注意,没有一个模式目前提供跨应用程序的内存共享。如果您希望以这种方式共享数据,我们建议运行一个服务器应用程序,通过查询相同的RDD来服务多个请求。 http://spark.apache.org/docs/latest/job-scheduling.html

0

您可以使用Apache Ignite在不同的应用程序之间共享RDD。 Apache ignite提供了一个抽象来共享应用程序可以通过其访问与不同应用程序相对应的RDD的RDD。此外,Ignite支持SQL索引,而Spark本身不支持。 详情请参阅https://ignite.apache.org/features/igniterdd.html

+0

虽然这可能在理论上回答这个问题,但[这将是更可取的](// meta.stackoverflow.com/q/8259)在这里包含答案的基本部分,并提供供参考的链接。 – manetsus

相关问题