【问题标题】:Spark: get JavaSparkContext that was created in another classSpark:获取在另一个类中创建的 JavaSparkContext
【发布时间】:2014-11-19 17:41:32
【问题描述】:
我有由几个类组成的 spark 应用程序。我在我的主类中创建 JavaSparkContext 并使用它从 hdfs (sc.textFile) 获取数据。然后将此数据传递给正在处理它的另一个对象。在处理过程中,我需要再次使用上下文从列表中生成 RDD。我不想在 API 中再添加一个参数来将上下文对象从主类传递给另一个。还有其他选择吗,比如使用某种静态方法获取现有上下文?
附:在网络上搜索没有帮助。
【问题讨论】:
标签:
java
mapreduce
apache-spark
【解决方案1】:
您通过向类构造函数提供配置来创建SparkContext 实例。因此,如果您想在程序的另一部分使用该实例,则需要以某种方式传递相同的引用。
将上下文作为参数传递给作业是一个有效的选择,也是我的首选方式。确保将参数设置为瞬态以避免它被闭包“捕获”。
您还可以使用经典的“单例”模式,使用一个封装上下文创建并提供静态方法来获取单例引用的类。
在所有情况下,您都需要提供适合您特定需求的 ctx 共享机制。