You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Spark 3+日志关闭方法及Spark-submit日志过多问题解决

解决Spark-submit日志过多的问题

核心问题定位

你的日志配置未生效的关键原因是:Spark不会自动识别log4j2.templates作为日志配置文件,它默认只会加载conf目录下的log4j2.properties或log4j2.xml文件。

可行解决方案

方案1:修改全局配置文件(永久生效)

  1. 重命名配置文件:将log4j2.templates改名为log4j2.properties,放到Spark安装目录的conf文件夹下(如$SPARK_HOME/conf/)。
  2. 更新配置内容,将日志级别降至ERROR并简化输出格式:
# 根日志级别设置为ERROR,仅输出错误信息
rootLogger.level = ERROR
rootLogger.appenderRef.stdout.ref = console

# 控制台输出格式配置,减少冗余信息
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

方案2:提交命令时指定自定义配置(临时生效)

如果不想修改全局配置,可在spark-submit命令中通过JVM参数指定你的配置文件路径(需使用绝对路径):

spark-submit --driver-java-options "-Dlog4j.configurationFile=file:/absolute/path/to/your/log4j2.properties" your_spark_script.py

方案3:代码内动态设置日志级别

若需在代码中控制日志,必须在SparkSession初始化前配置,同时关闭py4j的冗余日志(这是Spark日志的重灾区):

import logging
from pyspark.sql import SparkSession

# 关闭py4j的日志输出
logging.getLogger("py4j").setLevel(logging.ERROR)

# 初始化SparkSession前设置日志级别
spark = SparkSession.builder.appName("YourApp").getOrCreate()
spark.sparkContext.setLogLevel("ERROR")

内容的提问来源于stack exchange,提问作者X HOxha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:42:28