gpt4 book ai didi

java - Spark 提交到 Amazon EMR 时如何指定自定义 log4j.configuration 的位置?

转载 作者:行者123 更新时间:2023-12-02 12:19:11 24 4
gpt4 key购买 nike

我正在尝试在 EMR 集群中运行 Spark 作业。

我的spark-submit我已经添加了从log4j.properties读取的配置

--files log4j.properties --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:/log4j.properties"

我还添加了

log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/log/test.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %5p %c{7} - %m%n

在我的 log4j 配置中。

无论如何,我在控制台中看到了日志,但没有看到生成的日志文件。我在这里做错了什么?

最佳答案

引用spark-submit --help:

--files FILES Comma-separated list of files to be placed in the working directory of each executor. File paths of these files in executors can be accessed via SparkFiles.get(fileName).

如果您无法使用 SparkFiles.get(fileName) (对于 log4j 则不能),这并没有说明如何处理 FILES

引用 SparkFiles.getscaladoc :

Get the absolute path of a file added through SparkContext.addFile().

这也没有给你太多信息,但建议看看 source code of SparkFiles.get :

def get(filename: String): String =
new File(getRootDirectory(), filename).getAbsolutePath()

它的好处是 getRootDirectory() uses an optional property or just the current working directory :

def getRootDirectory(): String =
SparkEnv.get.driverTmpDir.getOrElse(".")

这就是我们需要做的事情,不是吗?

在驱动程序上,所谓的 driverTmpDir 目录应该很容易在 Web UI 的“环境”选项卡中找到(在 Spark Properties 下的 spark.files 属性或标记为“Classpath Entries”的类路径条目下) (源列中的“由用户添加”)。

在执行器上,我假设一个本地目录,因此我不会使用file:/log4j.properties,而是使用

-Dlog4j.configuration=file://./log4j.properties

-Dlog4j.configuration=file:log4j.properties

请注意指定本地工作目录的点(在第一个选项中)或不带前导的 / (在后者中)。

如果您还没有考虑过,请不要忘记使用 spark.driver.extraJavaOptions 为驱动程序设置 Java 选项。到目前为止,您只关注执行者。

您可能需要将 -Dlog4j.debug=true 添加到 spark.executor.extraJavaOptions 中,该选项应该打印 log4j 用于查找 log4j 的位置。属性

<小时/>

我自己没有在 EMR 或 YARN 集群上检查过这个答案,但相信这可能给了您一些在哪里找到答案的提示。 手指交叉!

关于java - Spark 提交到 Amazon EMR 时如何指定自定义 log4j.configuration 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44059981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com