AWS EMR上的自定义log4j.properties

Kap*_*ain 8 log4j emr apache-spark

我无法在Amazon EMR上覆盖和使用自定义log4j.properties.我在EMR(Yarn)上运行Spark,并尝试使用Spark-Submit中的所有以下组合来尝试使用自定义log4j.

--driver-java-options "-Dlog4j.configuration=hdfs://host:port/user/hadoop/log4j.properties"

--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=hdfs://host:port/user/hadoop/log4j.properties"
Run Code Online (Sandbox Code Playgroud)

我也尝试使用file:////而不是hdfs从本地文件系统中选择.这似乎都不起作用.但是,当我在本地Yarn设置上运行时,我可以正常工作.

有任何想法吗?

Kap*_*ain 5

基本上,在与支持人员交谈并阅读文档后,我发现有两个选项可以执行此操作:

1 -log4j.properties传递启动 EMR 时传递的直通配置。乔纳森在他的回答中提到了这一点。

2 - 将--files /path/to/log4j.properties开关包含到您的spark-submit命令中。这会将log4j.properties文件分发到每个 Spark Executor 的工作目录,然后将您更改-Dlog4jconfiguration为仅指向文件名:"spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties"


Jon*_*lly 3

log4j 对 HDFS 一无所知,因此它不能接受 hdfs:// 路径作为其配置文件。有关配置 log4j 的更多信息,请参阅此处。

要在 EMR 上配置 log4j,您可以使用配置 API将键值对添加到驱动程序和执行程序加载的 log4j.properties 文件中。具体来说,您希望将属性添加到spark-log4j 配置分类中。