2017-02-14 21 views
1

在spark-submit中,如何指定log4j.properties?spark-submit,如何指定log4j.properties

這是我的腳本。我試過所有的組合,甚至只使用一個本地節點。但看起來像log4j.properties未加載,所有調試級別信息都被轉儲。

current_dir=/tmp 
DRIVER_JAVA_OPTIONS="-Dlog4j.configuration=file://${current_dir}/log4j.properties " 

spark-submit \ 
--conf "spark.driver.extraClassPath=$current_dir/lib/*" \ 
--conf "spark.driver.extraJavaOptions=-Djava.security.krb5.conf=${current_dir}/config/krb5.conf -Djava.security.auth.login.config=${current_dir}/config/mssqldriver.conf" \ 
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file://${curent_dir}/log4j.properties " \ 
--class "my.AppMain" \ 
--files ${current_dir}/log4j.properties \ 
--master local[1] \ 
--driver-java-options "$DRIVER_JAVA_OPTIONS" \ 
--num-executors 4 \ 
--driver-memory 16g \ 
--executor-cores 10 \ 
--executor-memory 6g \ 
$current_dir/my-app-SNAPSHOT-assembly.jar 

log4j屬性:

log4j.rootCategory=INFO, console 
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.additivity.org=false 

log4j.logger.org=WARN 
parquet.hadoop=WARN 
log4j.logger.com.barcap.eddi=WARN 
log4j.logger.com.barcap.mercury=WARN 
log4j.logger.yarn=WARN 
log4j.logger.io.netty=WARN 
log4j.logger.Remoting=WARN 
log4j.logger.org.apache.hadoop=ERROR 

# this disables the table creation logging which is so verbose 
log4j.logger.hive.ql.parse.ParseDriver=WARN 

# this disables pagination nonsense when running in combined mode 
log4j.logger.com.barcap.risk.webservice.servlet.PaginationFactory=WARN 
+0

您只在執行程序上指定'-Dlog4j.configuration'。那是故意的嗎? –

+0

我從未在Hadoop上用'-Dlog4j.configuration ='獲得過很多運氣。由於「log4j.properties」是默認的文件名,只要在驅動程序CLASSPATH中添加包含該文件的*目錄*,Log4J就會找到它。或者更簡單一些,把你的文件放在你的$ SPARK_CONF_DIR和'spark-default.conf'以及朋友... –

+0

首先嚐試直接執行此操作,即使用一個非常簡單的程序並執行spark-submit --dirver-java-選項「-Dlog4j.configuration = file:///home/username/file.prop」沒有任何其他內容。它應該工作。如果不是,那可能是因爲你的代碼依賴於其他的slf4j實現,並且使用那個實現來代替(這意味着它可能取得它們的屬性)。 –

回答

2
  1. 複製火花defaults.conf到一個新的應用程序,火花defaults.conf
  2. 添加-Dlog4j.configuration =文件:// log4j.properties添加到app-spark-defaults.conf中的spark.driver.extraJavaOptions。例如:

    spark.driver.extraJavaOptions -XXOther_flag -Dlog4j.configuration =文件://log4j.properties

  3. 使用--properties文件到新的conf文件運行你的火花。 例如:
    火花提交--properties文件APP-火花defaults.conf --class my.app.class --master紗--deploy模式客戶端〜/我-jar.jar

+0

你累了嗎?它的工作? –

+0

是的,它對我來說EMR –

+0

哦好吧。我無法弄清楚如何在紗線羣上運行 –

-1

hadoop_home/conf中已經有一個log4j.properties。只需編輯那一個,添加自己的記錄器

+1

在大多數裝置中,運行這項工作的人並不是控制hadoop_home的人 – Krever