spark-submitでは、log4j.propertiesの指定方法は?spark-submit、log4j.propertiesの指定方法
ここに私のスクリプトです。私はすべての組み合わせを試しており、ローカルノードを1つだけ使用しています。 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
実行者に対して '-Dlog4j.configuration'を指定するだけです。それは意図的なのでしょうか? –
Hadoopで '-Dlog4j.configuration ='を使ったことはありませんでした。 "log4j.properties"はデフォルトのファイル名なので、ドライバのCLASSPATHにファイルを含む*ディレクトリ*を追加しようとすると、Log4Jがそれを見つけます。それとももっと簡単なのは、あなたの$ SPARK_CONF_DIRに 'spark-default.conf'と友人と一緒にあなたのファイルをドロップすることです... –
最初にこれを直接実行しようとします。つまり、非常に簡単なプログラムを使用してspark-submit-dirver-オプション "-Dlog4j.configuration = file:///home/username/file.prop"を実行します。それは動作するはずです。そうでなければ、あなたのコードは他のslf4jの実装に依存していて、代わりにその実装を使用している可能性があります(つまり、そのプロパティを取っている可能性があります)。 –