如何在SparkContext类中使用getOrCreate()方法以及我们从此方法实现的功能到底是什么

时间:2017-06-06 04:16:46

标签: apache-spark

getOrCreate()SparkContext Class方法的用法是什么以及如何使用它?我没有找到任何合适的例子(编码方式)。

我的理解是使用上述方法我可以在应用程序之间共享spark上下文。这里的应用程序是什么意思? 应用程序是否将不同的作业提交给火花集群? 如果是这样,那么我们应该能够将在一个应用程序中注册的全局变量(广播)和临时表用于另一个应用程序吗?

如果有人可以详细说明并给出合适的例子。

2 个答案:

答案 0 :(得分:2)

Javadoc for SparkContext中所述,当应用程序可能希望共享SparkContext时,getOrCreate()非常有用。所以是的,您可以使用它来跨应用程序共享SparkContext对象。是的,您可以重复使用广播变量和临时表。

至于了解Spark应用程序,请参阅此link。简而言之,应用程序是Spark中最高级别的计算单位。你提交给spark集群的不是工作,而是应用程序。在Spark应用程序中调用操作会触发启动作业以实现它。

答案 1 :(得分:0)

getOrCreate

公共SparkSession getOrCreate()

获取一个现有的SparkSession,或者,如果不存在,则根据此构建器中设置的选项创建一个新的SparkSession。 此方法首先检查是否存在有效的线程本地SparkSession,如果是,则返回该线程。然后,它检查是否存在有效的全局默认SparkSession,如果是,则返回该默认值。如果不存在有效的全局默认SparkSession,则该方法将创建一个新的SparkSession并将新创建的SparkSession分配为全局默认值。

如果返回了现有的SparkSession,则在此构建器中指定的配置选项将应用于现有的SparkSession。

请检查链接:[https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/sql/SparkSession.Builder.html] [1]

一个例子可以是:

from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()