如何查找Spark存储所有配置参数(含默认配置)的位置
Spark配置加载逻辑及默认配置来源说明
你在服务器上搜不到spark.sql.adaptive.enabled的默认值是正常现象,Spark的默认配置绝大多数都没有存放在外置的物理配置文件中,而是硬编码在各个功能模块的源码里。
配置加载优先级
Spark加载配置的顺序从高到低如下,高优先级的配置会覆盖低优先级的同参数值:
- 代码中通过
SparkConf实例、spark.conf.set()方法显式设置的参数 - 作业提交时通过
spark-submit/spark-shell的--conf参数传入的配置 - 部署节点上
spark-defaults.conf文件中定义的自定义配置 - 各模块源码中定义的默认配置值
默认配置的存储位置
你提到的spark.sql.adaptive.enabled属于Spark SQL模块的配置,它的默认值定义在源码的org.apache.spark.sql.internal.SQLConf类中,比如Spark 3.2及以后的版本中,这个参数的默认值被硬编码为true,所以你不需要手动配置就能拿到这个返回值,自然在外部的配置文件里搜不到对应记录。
Spark不存在单独存放所有默认配置的外置文件,所有默认值都和对应功能的代码绑定在一起。
如何获取全量配置(含默认值)
你之前使用的spark.sparkContext.getConf().getAll()只会返回被显式修改过的配置,没有被自定义过的默认值不会出现在返回结果中。你可以用以下代码获取全量配置:
# PySpark 3.x 版本获取全量配置(含默认值) # 1. 获取所有SQL相关配置 all_sql_conf = spark.conf.getAll() for conf_key, conf_value in all_sql_conf.items(): print(f"{conf_key}: {conf_value}") # 2. 获取Spark核心全量配置 from pyspark import SparkConf full_core_conf = SparkConf().getAll() for conf_key, conf_value in full_core_conf: print(f"{conf_key}: {conf_value}")
内部非公开配置说明
Spark确实存在一部分不对外公开的内部配置,通常以spark.internal为参数前缀,这类配置是给Spark内部组件调度使用的,没有公开文档,也不建议普通用户修改,这类配置的默认值同样是硬编码在源码中。
内容的提问来源于stack exchange,提问作者Pankaj Tiwari
相关产品推荐
相关产品推荐

