Spark:获取在另一个类中创建的JavaSparkContext

时间:2014-11-19 17:41:32

标签: java mapreduce apache-spark

我有几个类组成的spark应用程序。我在我的主类中创建JavaSparkContext并使用它从hdfs(sc.textFile)获取数据。然后将此数据传递给正在处理它的另一个对象。在处理过程中,我需要再次使用上下文从List生成RDD。我不想在API中再添加一个参数来将上下文对象从主类传递给另一个。还有其他选项,比如使用静态方法获取现有上下文吗?

P.S。在网上搜索没有帮助。

1 个答案:

答案 0 :(得分:3)

您可以通过为类构造函数提供配置来创建SparkContext 实例。因此,如果要在程序的另一部分中使用该实例,则需要以某种方式传递相同的引用。

将上下文作为参数传递给作业是一个有效的选项,这将是我的首选方式。确保将该参数设置为瞬态,以避免被闭包“抓住”。

您还可以使用经典的“Singleton”模式,使用封装上下文创建的类,并提供静态方法来获取单例引用。

在所有情况下,您都需要提供适合您特定需求的ctx共享机制。