2017-10-16 92 views
0

我一直在试图找到Spark的所有log4j属性的参考,并且很难找到它。我发现很多例子,人们看到它们有一些。但我试图看看是否有一个参考的地方有所有这些。有没有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*** 

甚至更​​具体的跟踪URL。由于我对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 

这重定向几乎纱线日志所有Spark到一个文件中(从蒂亚戈共享的链接略有修改)。

关键的东西我失踪了......

1)我需要包括log4j.logger.CLASS_NAME,我错过了log4j.logger位..

2)需要有log4j的。 additivity.CLASS_NAME =假。没有这个,它只会将INFO登录到默认设置。

起初很让人困惑,但是一旦你把图案放下,它就开始有点意义了。

回答

0

我会建议你看看黑客中午在这篇文章中看看: https://hackernoon.com/how-to-log-in-apache-spark-f4204fad78a

更复杂一点,如果你想生成纱线应用自己的日志,火花,产生火花日志提交。

+0

谢谢Thiago,这是非常有帮助的。我已经注意到的一个挑战是日志输出到控制台,除非我设置根日志记录器。它似乎没有考虑所有火花噪声的文件记录覆盖。其中一些也是纱线的东西,我遇到的问题的一部分就是知道要调整哪个日志设置来控制它。例如,“INFO org.apache.spark.deploy.yarn.Client”出现在我的控制台上。我试着设置一些东西,比如log4j.logger.org.apache.spark.deploy.yarn.Client = WARN,这似乎没有做任何事情。有什么办法可以把它解决吗? –