如何在日志中使用Spark应用名称?

问题描述 投票:0回答:1

我在 Yarn 集群中运行 Apache spark 应用程序。我使用相同的应用程序多次触发(spark-submit)不同的参数(参数之一是

--name
)并且我有用于日志的通用log4j.xml文件。

我想在 log4j.xml 中使用像

${spark.app.name}
这样的东西来处理来自各个 spark 作业的不同日志。

我尝试在 log4j.xml 中使用

${spark.app.name}
但它不起作用。

  1. 我做错了什么?
  2. 有没有更好的方法在日志中记录 spark 应用程序名称?

试过: 我尝试在 log4j.xml

 中使用 
${spark.app.name}
${spark.app.id}

预计会发生: 能够在每一行中看到 spark 作业名称

实际结果: Spark 作业名称没有出现在日志中,而是空的。

注意:我已经完成了这个问题在驱动程序日志中输出 Spark 应用程序名称。它没有帮助。

apache-spark log4j hadoop-yarn
1个回答
0
投票

我认为您正在尝试使用 spark 属性 (

${spark.app.name}
) 来配置 log4j。这行不通。

如果你有一个值(

name
)来区分工作,你可以设置一个系统属性并在
log4j.xml
文件中使用它。

logback.xml
中使用这个变量:
${sys:logfilename}

应用触发时添加系统属性:

spark-submit -Dlogappname=App1 app.jar

© www.soinside.com 2019 - 2024. All rights reserved.