gpt4 book ai didi

apache-spark - 在 Spark java 应用程序中使用 log4j2

转载 作者:行者123 更新时间:2023-12-03 22:04:11 26 4
gpt4 key购买 nike

我正在尝试在我的 Spark 作业中使用 log4j2 记录器。基本要求:log4j2 配置位于类路径之外,因此我需要明确指定其位置。当我不使用 spark-submit 直接在 IDE 中运行我的代码时,log4j2 运行良好。但是,当我使用 spark-submit 将相同的代码提交到 Spark 集群时,它找不到 log42 配置并回退到默认的旧 log4j。

启动器命令

${SPARK_HOME}/bin/spark-submit \
--class my.app.JobDriver \
--verbose \
--master 'local[*]' \
--files "log4j2.xml" \
--conf spark.executor.extraJavaOptions="-Dlog4j.configurationFile=log4j2.xml" \
--conf spark.driver.extraJavaOptions="-Dlog4j.configurationFile=log4j2.xml" \
myapp-SNAPSHOT.jar

maven 中的 Log4j2 依赖

<dependencies>
. . .
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<!-- Bridge log4j to log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<!-- Bridge slf4j to log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependencies>

有什么我可能会错过的想法吗?

最佳答案

目前显然没有对 Spark 中的 log4j2 的官方支持。以下是关于该主题的详细讨论:https://issues.apache.org/jira/browse/SPARK-6305

在实践方面,这意味着:

  1. 如果您有权访问 Spark 配置和 jar 并可以修改它们,在手动将 log4j2 jar 添加到 SPARK_CLASSPATH 并提供 log4j2 后,您仍然可以使用 log4j2配置文件到 Spark。

  2. 如果您在托管的 Spark 集群上运行并且无法访问 Spark jar/config,那么您仍然可以使用 log4j2,但是它的使用将仅限于在驱动程序端执行的代码.执行器运行的任何代码部分都将使用 Spark 执行器记录器(这是旧的 log4j)

关于apache-spark - 在 Spark java 应用程序中使用 log4j2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496654/

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