当我们使用newSession()创建新会话时,新会话是否会继承从父会话设置的所有配置属性?

根据spark doc,newSession()返回新的SparkSession作为新的会话,其具有单独的SQLConf但共享SparkContext和表缓存.在这方面,我无法理解SQLConfSparkContext之间的区别.

在数据库上执行下面的测试,NewSession似乎没有从父会话中引入任何现有的配置.那么,DOC-"new session, that has separate 100, but shared 101 and table cache"中提到的行是什么意思?

# Session-1

from pyspark.sql import SparkSession
spark_session_1 = SparkSession.builder.appName('app_name').config("spark.sql.sources.default", "parquet").getOrCreate()
spark_session_1.conf.set("spark.sql.shuffle.partitions", "5000")

print(spark_session_1.conf.get("spark.sql.sources.default"))    # parquet (note: default val is 'delta')
print(spark_session_1.conf.get("spark.sql.shuffle.partitions")) # 5000
# Session-2

spark_session_2 = spark_session_1.newSession()

print(spark_session_2.conf.get("spark.sql.sources.default"))     # delta
print(spark_session_2.conf.get("spark.sql.shuffle.partitions"))  # 200
# Session-3

spark_session_3 = spark_session_1.newSession()
spark_session_3.conf.set("spark.sql.shuffle.partitions", "333")

print(spark_session_3.conf.get("spark.sql.sources.default"))    # delta
print(spark_session_3.conf.get("spark.sql.shuffle.partitions")) # 333

推荐答案

您所看到的是有意义的,因为您正在查看的两个配置值:

  • spark.sql.sources.default
  • spark.sql.shuffle.partitions

SQLConf个配置值(注意它们以spark.sql开头).你可以看到,在source code.这意味着,当使用newSession创建新会话时,不继承这些配置值是有意义的.因为你们不一样!

SparkContextSQLConf的区别:

  • 电话号码是SparkContext represents the connection to a Spark cluster, and can be used to create RDD and broadcast variables on that cluster.
  • SQLConf是一个允许设置和获取spark.sql个配置参数的类

但这又有什么用呢?它使得在同一个SparkContext中使用不同的SQL配置值成为可能.这意味着在单个集群上的单个应用程序中,您可以拥有多个具有不同SQL属性的DataFrame,这在您的应用程序需要时提供了一定的灵活性.

Python相关问答推荐

使用decorator 自动继承父类

如何判断LazyFrame是否为空?

socket.gaierror:[Errno -2]名称或服务未知|Firebase x Raspberry Pi

是什么导致对Python脚本的jQuery Ajax调用引发500错误?

使用regex分析具有特定字符的字符串(如果它们存在)

Python无法在已导入的目录中看到新模块

使文本输入中的文本与标签中的文本相同

如何从FDaGrid实例中删除某些函数?

使用LineConnection动画1D数据

如何在箱形图中添加绘制线的传奇?

发生异常:TclMessage命令名称无效.!listbox"

如何在Raspberry Pi上检测USB并使用Python访问它?

如何在Python中找到线性依赖mod 2

Plotly Dash Creating Interactive Graph下拉列表

如何合并两个列表,并获得每个索引值最高的列表名称?

pandas:对多级列框架的列进行排序/重新排序

如何按row_id/row_number过滤数据帧

如何删除重复的文字翻拍?

如何过滤组s最大和最小行使用`transform`'

如何求相邻对序列中元素 Select 的最小代价