Apache spark 在驱动程序日志中输出Spark应用程序名称

Apache spark 在驱动程序日志中输出Spark应用程序名称,apache-spark,log4j,apache-spark-standalone,spark2.4.4,Apache Spark,Log4j,Apache Spark Standalone,Spark2.4.4,我需要在驱动程序日志的每行中输出Spark应用程序名称(Spark.app.name)(以及消息和日期等其他属性)。 到目前为止,我没有找到正确的log4j配置或任何其他提示。 怎么可能呢 我将感谢任何帮助 使用Spark独立模式。一种似乎有效的方法包括以下两个步骤: 创建自定义log4j.properties文件并更改布局: ... # this is just an example layout config # remember the rest of the configuration

我需要在驱动程序日志的每行中输出Spark应用程序名称(
Spark.app.name
)(以及消息和日期等其他属性)。 到目前为止,我没有找到正确的log4j配置或任何其他提示。 怎么可能呢

我将感谢任何帮助


使用Spark独立模式。

一种似乎有效的方法包括以下两个步骤:

  • 创建自定义
    log4j.properties
    文件并更改布局:

    ...
    # this is just an example layout config
    # remember the rest of the configuration
    log4j.appender.stdout.layout.ConversionPattern=${appName}--%d{yyyy-mm-dd HH:mm:ss,SSS} [%-5p] [%c] - %m%n
    
    此文件必须位于类路径的根目录下(对于大多数构建工具,如在
    src/main/resources
    中),或者在集群中的服务器上编辑
    /conf/log4j.properties

  • 然后在引导spark上下文之前,使用引用的键设置属性:

    System.setProperty("appName", "application-name");
    SparkSession spark = SparkSession.builder().appName("application-name")
    ...
    
  • 在我的快速测试中,以上在所有行中都会产生类似的结果(在本地模式下测试):

    您可能更愿意调用
    spark submit
    ,而不是手动在代码中设置变量

    --conf 'spark.driver.extraJavaOptions=-DappName=application-name'
    

    对于更持久的更改,您可能需要使用布局更改编辑
    /conf/log4j.properties
    (如果文件不存在,则复制模板),并使用系统属性调用
    spark submit
    /
    spark shell
    ,等等。

    小注释:似乎没有必要引入
    appName
    ,可以使用默认变量
    spark.app.name
    。太好了,谢谢。我不知道那房子。
    --conf 'spark.driver.extraJavaOptions=-DappName=application-name'