PySpark环境下如何设置spark.sql.debug.maxToStringFields参数
spark.sql.debug.maxToStringFields配置修改方法 不需要必须执行bash命令、也不需要强制修改配置文件,直接在Jupyter Notebook或Python脚本中就可以完成配置,三种常用方式按需选择即可:
初始化SparkSession时设置(最稳定,推荐使用)
不管是Notebook还是普通py脚本,在创建SparkSession对象时直接传入配置参数即可,配置会在整个应用生命周期生效:from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("your_task_name") \ # 括号里第二个参数填你需要的字段上限数值,默认值为25 .config("spark.sql.debug.maxToStringFields", 100) \ .getOrCreate()注意:该方式必须在SparkSession实例创建前传入配置,Spark启动后再通过builder传参不会生效
已启动SparkSession时临时修改
如果Notebook已经启动了Spark、不想重启内核,可以直接在代码单元里执行配置修改命令,对当前启动的Spark应用即时生效:spark.conf.set("spark.sql.debug.maxToStringFields", 100)该配置仅在当前Spark应用运行期间有效,应用关闭后会恢复默认值。
启动命令行传参(单次生效)
如果是通过bash启动pyspark交互环境、或者用spark-submit提交任务,可以在启动命令后带--conf参数指定配置,仅对本次启动的任务生效:# 启动pyspark交互环境 pyspark --conf spark.sql.debug.maxToStringFields=100 # 提交pyspark脚本 spark-submit --conf spark.sql.debug.maxToStringFields=100 your_script_path.py
配置文件修改方式(全局默认生效)
如果需要所有PySpark任务默认使用该配置、不想每次在代码或启动命令里重复设置,才需要修改配置文件,venv虚拟环境下的配置文件路径为:你的虚拟环境根目录/lib/python对应版本号/site-packages/pyspark/conf/
进入该目录后,如果没有spark-defaults.conf文件,就把同目录下的spark-defaults.conf.template复制一份重命名为spark-defaults.conf,打开文件后新增一行配置即可:
spark.sql.debug.maxToStringFields 100
保存后后续所有启动的PySpark任务都会默认加载该配置。
内容的提问来源于stack exchange,提问作者forever_learner

