2017-10-16 97 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,這似乎沒有做任何事情。有什麼辦法可以把它解決嗎? –