如何关闭PySpark 4.x中Traceback前的冗长JSON结构化日志?
关闭PySpark 4.x中JSON结构化错误日志的方法
PySpark 4.x执行错误代码时,会在Python Traceback前输出一段冗长的JSON格式日志(来自DataFrameQueryContextLogger),可以通过以下几种方式关闭:
方法一:创建SparkSession时配置
初始化SparkSession时直接添加配置参数,禁用该日志:
from pyspark.sql import SparkSession from pyspark.sql.types import IntegerType spark = SparkSession.builder \ .appName("YourAppName") \ .config("spark.sql.queryContext.log.enabled", "false") \ .getOrCreate() # 测试代码 a = [1, 2, 3] aa = spark.createDataFrame(a, IntegerType()) aa.select("missing")
方法二:启动PySpark/Spark Shell时指定参数
在命令行启动pyspark或spark-shell时,通过--conf参数直接禁用:
# 启动pyspark pyspark --conf spark.sql.queryContext.log.enabled=false # 启动spark-shell spark-shell --conf spark.sql.queryContext.log.enabled=false
方法三:修改Spark全局配置文件
如果需要全局生效,修改Spark的默认配置文件:
- 进入Spark安装目录的
conf文件夹,复制spark-defaults.conf.template为spark-defaults.conf(已存在则跳过) - 在
spark-defaults.conf中添加一行:spark.sql.queryContext.log.enabled false - 重启Spark服务后,所有会话都会自动应用该配置
完成以上操作后,执行错误代码时只会显示Python的Traceback信息,不会再输出冗长的JSON日志。
内容的提问来源于stack exchange,提问作者Jiri Humpolicek
相关产品推荐
相关产品推荐

