getOrCreate()
中SparkContext Class
方法的用法是什么以及如何使用它?我没有找到任何合适的例子(编码方式)。
我的理解是使用上述方法我可以在应用程序之间共享spark上下文。这里的应用程序是什么意思? 应用程序是否将不同的作业提交给火花集群? 如果是这样,那么我们应该能够将在一个应用程序中注册的全局变量(广播)和临时表用于另一个应用程序吗?
如果有人可以详细说明并给出合适的例子。
答案 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()