我一直在尝试找到Spark的所有log4j属性的参考,并且很难找到它。我发现了许多人们看到它的部分内容的例子。但是我试图看看是否有一个包含所有这些内容的引用。
对于我的特定用例,我正在编写一些代码,通过触发spark-submit作业执行一系列数据转换,然后可以由其他用户使用/扩展。我不需要大多数默认情况下火花喷出的东西,并且很容易设置类似log4j.rootLogger = WARN,stdout。但是,INFO中有一些有用的位可以打印到屏幕上。特别是:
org.apache.spark.deploy.yarn.Client (Logging.scala:logInfo(54)) -
client token: Token { kind: YARN_CLIENT_TOKEN, service: }
diagnostics: N/A
ApplicationMaster host: N/A
ApplicationMaster RPC port: -1
queue: ****
start time: 1508185983070
final status: UNDEFINED
tracking URL: ***My tracking URL***
user: ***User***
更具体地说是跟踪网址。可能也有点因为我对Log4j的了解有限,这使得它有点难度。我尝试过这样的事情:
org.apache.spark.deploy.yarn.Client=Info
但这似乎不是一个合法的伐木财产。有没有办法只在Spark中获取该信息?有没有办法看到要设置的所有可能的日志记录属性?
谢谢!
更新
我能够弄清楚这一点。其中大部分是由于我不知道log4j.properties如何工作,但现在有更好的处理。
您可以设置每个类的记录器和日志级别,并保持所有子类。
我将log4j.properties更改为如下所示:
log4j.logger.org.apache.spark=INFO, RollingAppender
log4j.additivity.org.apache.spark=false
log4j.logger.org.apache.hadoop=INFO, RollingAppender
log4j.additivity.org.apache.hadoop=false
log4j.logger.org.spark_project.jetty=INFO, RollingAppender
log4j.additivity.org.spark_project.jetty=false
log4j.logger.org.apache.spark.deploy.yarn.Client=INFO, RollingAppender
log4j.additivity.org.apache.spark.deploy.yarn.Client=false
并且将YARN日志上的所有Spark重定向到一个文件(稍微修改了Thiago共享的链接)。
我遗失的关键事情......
1)我需要包含log4j.logger.CLASS_NAME,我错过了log4j.logger位..
2)需要log4j.additivity.CLASS_NAME = false。如果没有它,它只会将INFO记录到默认设置。
一开始它很混乱,但是一旦你把模式打下来就开始有点意义了。
答案 0 :(得分:0)
我建议你看一下Hacker Noon的这篇文章: https://hackernoon.com/how-to-log-in-apache-spark-f4204fad78a
如果你想在Yarn应用程序中生成自己的日志作为Spark Submit,那么在Spark中生成日志会有点复杂。