java - Spark : get JavaSparkContext that was created in another class

标签 java mapreduce apache-spark

我有由几个类组成的 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/

相关文章:

java - 从 URL 到 Document 对象

java - 尝试通过另一个外部 jar 引用外部 jar - httpcore 通过 httpclient

java - Janino scriptella 与数组 List 的使用

java - 检测 Java 匿名内部类对象

ruby - 流作业中有多个mapper和reducer文件

scala - Spark SFTP 连接器库 - Spark SFTP 连接失败

arrays - mongodb - 检索数组子集

python - 是否有使用常规文件系统的简单 Python map-reduce 框架?

apache-spark - Spark 没有这个字段 METASTORE_CLIENT_FACTORY_CLASS

java - 在 Spark 中将数据集应用为广播