如何在Spark-shell中停止打印INFO日志

前言

在使用Spark-shell做一些測(cè)試時(shí)候會(huì)產(chǎn)生大量無用的INFO級(jí)別的日志,因此想把它們給禁用掉。具體方法如下。

解決方法

- 使用自定義的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時(shí)候, 配置 ==--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"

也可以在提交作業(yè)時(shí)使用
--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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容