在EMR群集上配置Livy log4j属性

问题描述

我正在使用livy提供的剩余Apis在EMR集群上提交Spark作业。创建集群时,可以在配置中使用json以下的内容覆盖livy-conf文件中的livy属性-

[{'classification': 'livy-conf','Properties': {'livy.server.session.state-retain.sec':'1200s'}}]

我看到livy conf文件夹中有一个log4j.properties文件夹。 ,但是如何覆盖log4j.properties中的配置属性?启动集群时,我在软件设置中使用了以下json,但出现错误-分类'log4j.properties'对父分类'null'无效

[
    {
        "classification": "livy-conf","properties": {
            "livy.server.session.state-retain.sec": "1200s","livy.server.yarn.poll-interval": "3s"
        }
        
    },{
        "classification": "log4j.properties","properties": {
            "log4j.rootCategory": "INFO,file","log4j.appender.file": "org.apache.log4j.FileAppender","log4j.appender.file.append": "true","log4j.appender.file.File": "s3://oneid-idaas-dev-us-east-1/dev/emr/livy_logs/","log4j.appender.file.layout": "org.apache.log4j.PatternLayout","log4j.appender.file.layout.ConversionPattern": ""
        }
    }
]

当我在livy-conf分类下对其进行子配置时,它仍然会给出错误-分类'log4j.properties'对父分类'livy-conf'无效。

[
  {
    "classification": "livy-conf","properties": {
      "livy.server.session.state-retain.sec": "1200s","livy.server.yarn.poll-interval": "3s"
    },"configurations": [
      {
        "classification": "log4j.properties","properties": {
          "log4j.rootCategory": "INFO,"log4j.appender.file.layout.ConversionPattern": "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %5p %c{7} - %m%n"
        }
      }
    ]
  }
]

是否可以在livy-conf中覆盖log4j.properties?我该怎么做? 期望从spark作业生成的stdouts将进入我在此处配置的文件中。 谢谢。

解决方法

我认为你的分类名称有误,名称应该是“livy-log4j”,参考链接here