当我们使用newSession()
创建新会话时,新会话是否会继承从父会话设置的所有配置属性?
根据spark doc,newSession()
返回新的SparkSession
作为新的会话,其具有单独的SQLConf
但共享SparkContext
和表缓存.在这方面,我无法理解SQLConf
和SparkContext
之间的区别.
在数据库上执行下面的测试,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