【发布时间】:2017-07-02 23:36:46
【问题描述】:
在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
【问题讨论】:
-
您只是在执行程序上指定
-Dlog4j.configuration。这是故意的吗? -
我从来没有在 Hadoop 上使用
-Dlog4j.configuration=运气。由于“log4j.properties”是默认文件名,只需尝试在驱动程序CLASSPATH中添加包含该文件的目录,Log4J就会找到它。或者更简单,将您的文件连同spark-default.conf和朋友一起放入您的$SPARK_CONF_DIR... -
首先尝试直接执行此操作,即使用非常简单的程序并执行 spark-submit --dirver-java-options "-Dlog4j.configuration=file:///home/username/file。道具”没有其他任何东西。它应该工作。如果不是,则可能是您的代码依赖于其他 slf4j 实现并使用该实现代替(这意味着它可能会采用它们的属性)。
标签: apache-spark log4j slf4j