我在Yarn集群中运行Apache spark应用程序。我使用相同的应用程序使用不同的参数(其中一个参数是--name
)多次触发(spark-submit),并且我有一个通用的log4j.xml文件用于日志。
我想在log4j.xml中使用像${spark.app.name}
这样的东西来处理来自单个spark作业的不同日志。
我尝试在log4j.xml中使用${spark.app.name}
,但它不起作用。
1.我做错了什么?
1.有没有更好的方法在日志中记录spark应用程序名称?
尝试:我尝试在log4j.xml中使用${spark.app.name}
和${spark.app.id}
期望发生:能够在每一行中看到spark作业名称
实际结果:Spark作业名称未出现在日志中,而是为空。
注意:我已经通过了这个问题Output Spark application name in driver log。这是没有帮助的。
1条答案
按热度按时间bsxbgnwa1#
我想你正在尝试使用spark属性(
${spark.app.name}
)来配置log4j。这不会起作用。如果您有一个值(
name
)来区分作业,您可以设置一个系统属性并在log4j.xml
文件中使用它。在
logback.xml
中使用此变量:${sys:logfilename}
在应用被触发时添加系统属性:
spark-submit -Dlogappname=App1 app.jar