如何在Spark中为执行程序和驱动程序使用自定义log4j属性

时间:2016-11-03 03:28:16

标签: java logging apache-spark log4j classpath

我正在尝试为Spark中的Executor和Driver设置自定义log4j属性。我想这样做而不将log4j文件上传到Executors和Driver节点。我在应用程序jar中有log4j属性文件。

spark-submit --deploy-mode cluster --master yarn --conf spark.driver.userClassPathFirst=true --conf spark.executor.userClassPathFirst=true --conf spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties --conf spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties --class com.***.MainApp s3://**/**-jar-with-dependencies.jar

我没有classpath中的log4j属性。清单如下:

Manifest-version: 1.0
Implementation-Title: ###
Implementation-Version: 1.7
Implementation-Vendor: ###

我的罐子的结构如下:

jar--
  ---- log4j.properties
  ---- com/
  ---- META-INF/
  ---- MANIFEST.MF

我需要做哪些更改才能使用jar本身中的log4j.properties文件,而不需要将其上传到Executor和Driver节点。

1 个答案:

答案 0 :(得分:0)

log4j.properties.template文件夹中有SPARK/conf

您可以编辑该log4j.properties文件,并将其与自定义选项放在同一目录中。

Spark将负责剩余。由于Spark内部使用log4j进行日志记录。