我有由几个类组成的 Spark 应用程序。我在主类中创建 JavaSparkContext 并使用它从 hdfs (sc.textFile) 获取数据。然后这个数据被传递给另一个正在处理它的对象。在处理过程中,我再次需要上下文来从列表中创建 RDD。我不想在 API 中添加一个参数来将上下文对象从主类传递到另一个类。是否还有其他选项,例如使用某种静态方法获取现有上下文?
附注在网络上搜索没有帮助。
最佳答案
您可以通过向类构造函数提供配置来创建 SparkContext
实例。因此,如果您想在程序的其他部分使用该实例,则需要以某种方式传递相同的引用。
将上下文作为参数传递给作业是一个有效的选项,也是我的首选方式。确保将该参数设置为 transient ,以避免它被闭包“捕获”。
您还可以使用经典的“单例”模式,使用封装上下文创建的类并提供静态方法来获取单例引用。
在所有情况下,您都需要提供适合您特定需求的 ctx 共享机制。
关于java - Spark : get JavaSparkContext that was created in another class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023409/