我有一个 RMI 集群。每个 RMI 服务器都有一个 Spark 上下文。 有没有办法在不同的 Spark 上下文之间共享 RDD?
最佳答案
正如 Daniel Darabos 所说,这是不可能的。 Spark 中的每个分布式对象都绑定(bind)到用于创建它的特定上下文(如果是 RDD,则为 SparkContext
;如果是 DataFrame
,则为 SQLContext
)数据集)。如果您希望在应用程序之间共享对象,则必须使用共享上下文(例如,参见 spark-jobserver
、 Livy 或 Apache Zeppelin )。由于 RDD 或 DataFrame 只是一个小的本地对象,因此实际上没有太多可以共享的内容。
共享数据是一个完全不同的问题。您可以使用专门的内存缓存( Apache Ignite )或分布在内存文件系统(如 Alluxio - 前 Tachyon)来最大限度地减少应用程序之间切换时的延迟,但您无法真正避免它。
关于apache-spark - 如何在2个Spark上下文之间共享Spark RDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27917784/