SparkContext.getOrCreate() 用途

2024-04-03

目的是什么getOrCreate方法来自SparkContext班级?我不明白什么时候应该使用这个方法。

如果我有 2 个 Spark 应用程序运行spark-submit,在主要方法中,我用以下方法实例化 Spark 上下文SparkContext.getOrCreate,两个应用程序将具有相同的上下文?

或者目的更简单,唯一的目的是当我创建一个spark应用程序时,我不想将spark上下文作为参数发送给方法,而我将其作为单例对象获取?


如果我有 2 个使用 Spark-submit 运行的 Spark 应用程序,并且在 main 方法中我使用 SparkContext.getOrCreate 实例化 Spark 上下文,那么两个应用程序将具有相同的上下文吗?

不,SparkContext 是一个本地对象。它不在应用程序之间共享。

当我创建 Spark 应用程序时,我不想将 Spark 上下文作为参数发送给方法,并且我会将其作为单例对象获取?

正是这个原因。SparkContext (or SparkSession)在 Spark 应用程序和核心 Spark 源代码中无处不在,传递它们将是一个巨大的负担。

它对于任意线程可以初始化上下文的多线程应用程序也很有用。

About docs https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#getOrCreate-org.apache.spark.SparkConf-:

is 函数可用于获取或实例化 SparkContext 并将其注册为单例对象。因为每个 JVM 只能有一个活动 SparkContext,所以当应用程序可能希望共享 SparkContext 时,这非常有用。

驱动程序在其自己的 JVM 中运行,并且没有内置机制可以在多个成熟的 Java 应用程序之间共享它(正确的应用程序执行自己的main. Check 每个 Java 应用程序是否有一个 JVM? https://stackoverflow.com/q/5947207/8371915 and 为什么每个应用程序有一个 JVM? https://stackoverflow.com/q/13539132/8371915相关的一般问题)。应用程序是指“逻辑应用程序”,其中多个模块执行自己的代码 - 一个例子是SparkJob on spark-jobserver。这个场景和通过没有什么区别SparkContext到一个函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SparkContext.getOrCreate() 用途 的相关文章

随机推荐