前言
在使用Spark-shell做一些测试时候会产生大量无用的INFO级别的日志,因此想把它们给禁用掉。具体方法如下。
解决方法
- 使用自定义的Log4j.properties
log4j.rootLogger=ERROR, console
# set the log level for these components
log4j.logger.com.test=DEBUG
log4j.logger.org=ERROR
log4j.logger.org.apache.spark=ERROR
log4j.logger.org.spark-project=ERROR
log4j.logger.org.apache.hadoop=ERROR
log4j.logger.io.netty=ERROR
log4j.logger.org.apache.zookeeper=ERROR
# add a ConsoleAppender to the logger stdout to write to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# use a simple message format
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
然后在提交spark-shell时候, 配置 ==--conf== 即可, 这种方法同样适用于Spark-submit
spark-shell \
--conf "spark.driver.extrajavaoptions=-Dlog4j.configuration=file:<file path>/log4j.xml" \
--conf "spark.executor.extrajavaoptions=-Dlog4j.configuration=file:<file path>/log4j.xml"
也可以在提交作业时使用
--conf "spark.driver.extrajavaoptions=-Dlog4jspark.root.logger=WARN,console"
- 在代码中控制
如果是Spark2.x,可以参考下面
//in Scala
SparkSession.builder.getorCreate().sparkContext.setLogLevel("ERROR")
#in Python
from pyspark.sql import SparkSession
SparkSession.builder.getorCreate().sparkContext.setLogLevel("ERROR")
Spark1.x
//In Scala
import org.apache.log4j.Logger
import org.apache.log4j.Level
Logger.getLogger("org").setLevel(Level.OFF)
Logger.getLogger("akka").setLevel(Level.OFF)
#In Python
log4j = sc._jvm.org.apache.log4j
log4j.LogManager.getRootLogger().setLevel(log4j.Level.ERROR)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。