2015-10-21 27 views
3

我想在獨立的Spark羣集中爲我的應用程序定製Log4J配置。我有一個log4j.xml文件在我的應用程序JAR中。讓Spark使用該配置而不是自己的Log4J配置的正確方法是什麼?Apache Spark定製應用程序的log4j配置

我嘗試使用--conf選項來設置以下,但沒有運氣。

spark.executor.extraJavaOptions -> -Dlog4j.configuration=log4j.xml 
spark.driver.extraJavaOptions -> -Dlog4j.configuration=log4j.xml 

我正在使用Spark 1.4.1,並且我的/ conf中沒有log4j.properties文件。

回答

2

如果您正在使用SBT作爲包管理器/生成器:

有一個在log4j.properties.template$SPARK_HOME/conf

  • 複製它在您的SBT項目src/main/resource
  • 刪除.template後綴
  • 編輯以滿足您的需求
  • SBT運行/包/ *將包括在JAR和Spark中引用它。

適用於我,並且可能包括其他包管理器的類似步驟,例如,行家。

+0

我正在使用Gradle構建項目。我在我的src/main/resources中放置了模板文件的副本,並刪除了.template後綴並進行了部署。但仍然沒有運氣。我檢查了最終的JAR,並在其中看到了log4j.properties文件。當我從Spark UI檢查應用程序日誌時,我仍然看到文本「使用Spark的默認log4j配置文件:org/apache/spark/log4j-defaults.properties」。 –

+0

不好意思誤解你的問題,以上只適用於自包含的火花應用程序。如果您想更改羣集的日誌記錄行爲,請將'log4j.properties.template'複製到相同的目錄中,刪除'.template'並編輯新文件。這應該爲集羣中的每個實例完成。還有'sc.setLogLevel(「LEVEL」)',但我無法理解它的表現。 – mehmetminanc

+0

謝謝。我想查看是否有辦法在不觸及羣集配置的情況下執行此操作。如果一切都失敗了,我會走下去。 –

2

嘗試使用driver-java-options。例如:

spark-submit --class my.class --master spark://myhost:7077 --driver-java-options "-Dlog4j.configuration=file:///opt/apps/conf/my.log4j.properties" my.jar 
+0

我早些時候嘗試過,但沒有幫助:( –

+0

奇怪的是,這是什麼在爲我工作 –

+0

這不起作用我試圖在集羣上做這個,我們在YARN上使用spark。以上所有這些添加到資源文件中,在submit命令中傳遞--driver-java-options如上所示但是沒有任何作用,它仍然會選擇默認的Jar – AJm

相關問題