Vic*_*son 2 log4j python-3.x apache-spark pyspark
我正在使用 PySpark 运行 Python 脚本(和测试),并希望从日志中删除不相关的信息。
每次我启动它们时,控制台中都会显示以下消息:
将默认日志级别设置为“WARN”。
要调整日志记录级别,请使用 sc.setLogLevel(newLevel)。对于 SparkR,请使用 setLogLevel(newLevel)。
我怎样才能完全删除它?(最好在log4j.properties中)
我已经log4j.rootCategory=ERROR, console在log4j.properties中设置了。
sc.setLogLevel(newLevel)按照消息所述执行的操作仅适用于以下日志,而不适用于脚本的开头。
log4j.propertieslog4j.logger.org.apache.spark=ERROR中的设置不会删除该消息。
我对此进行了很多搜索,但找不到相关的配置。
从Spark Github(在 Logging.scala 中),我可以看到有一个silent用于显示消息的变量,但我找不到它的更改位置:
if (!silent) {
System.err.printf("Setting default log level to \"%s\".\n", replLevel)
System.err.println("To adjust logging level use sc.setLogLevel(newLevel). " +
"For SparkR, use setLogLevel(newLevel).")
}
Run Code Online (Sandbox Code Playgroud)
预先感谢您的任何帮助,
我找到了解决方案!
就在我从Logging.scala引用的代码之前,有:
if (replLevel != rootLogger.getEffectiveLevel()) {
if (!silent) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着,不必尝试更改silent变量,而是可以在log4j.propertiesrepl中将和rootlogger 的日志级别设置为不同,以获得相同的结果:
log4j.rootCategory=WARN, console
log4j.logger.org.apache.spark.repl.Main=ERROR
Run Code Online (Sandbox Code Playgroud)
您还可以添加log4j.logger.org.apache.spark=ERROR以删除 Spark 中可能出现的其他警告。