我正在尝试覆盖Spark的默认log4j.properties
,但一直没有任何成功。我尝试在spark-submit中添加以下内容:
--conf "spark.executor.extraJavaOptions=Dlog4j.configuration=/tmp/log4j.properties"
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=/tmp/log4j.properties"
但这似乎并不管用。我也尝试在spark-submit
中使用--files
选项,但似乎也不起作用。有没有人设置了日志记录,所以每个驱动程序都有一个log4j.properties
文件,而不是使用默认的文件?
我使用Mesos和Marathon来运行Spark驱动程序。我不确定--files
选项,也找不到任何示例来说明它是如何使用的,以及它到底做了什么。
我还想提一下,我手动将log4j.properties
文件上载到所有具有我的更改的节点上进行测试。
目前Spark的版本是1.1.0。
发布于 2015-06-12 09:26:08
对于驱动程序/外壳程序,您可以在运行spark-shell
或spark-submit
脚本时使用--driver-java-options
进行设置。
在Spark中,您不能设置--conf spark.driver.extraJavaOptions
,因为它是在启动JVM之后设置的。在使用spark提交脚本时,--driver-java-options
会在启动运行驱动程序的JVM (例如java -Dblah MyClass
)时使用这些选项。
请注意,-Dlog4j.configuration
属性应该是一个有效的URL,因此如果它来自文件系统中的某个位置,请使用file:
URL。如果资源变量无法转换为URL,例如由于MalformedURLException,那么log4j将从类路径中搜索资源。
例如,使用自定义的log4j.properties文件;
./spark-shell --driver-java-options "-Dlog4j.configuration=file:///etc/spark/my-conf/log4j.warnonly.properties"
发布于 2017-03-03 03:57:56
只有几个细节被忽略了。
conf标志应如下所示:
--conf spark.executor.extraJavaOptions="-Dlog4j.configuration=log4j.properties" --conf spark.driver.extraJavaOptions="-Dlog4j.configuration=/tmp/log4j.properties" --files /tmp/log4j.properties
您还需要使用--files
参数将log4j.properties
文件上传到集群,执行者可以在集群中访问该文件。此外,正如上面所述的配置,假设您使用的是client
模式,在cluster
中,两个配置将使用相同的相对路径:-Dlog4j.configuration=log4j.properties
备注:如果您的日志覆盖还需要额外的依赖项,您可能还需要提供它们:--conf spark.driver.extraClassPath=custom-log4j-appender.jar
请参阅:custom-log4j-appender-in-spark-executor
祝好运
发布于 2015-03-14 08:21:07
我不相信spark.driver.extraJavaOptions
参数存在。对于spark.executor.extraJavaOptions
,你似乎有一个拼写错误。试试这个:
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=/tmp/log4j.properties"
https://stackoverflow.com/questions/28840438
复制相似问题