【问题标题】:custom log4j class is not working over spark 2.0 EMR自定义 log4j 类不适用于 spark 2.0 EMR
【发布时间】:2017-05-13 00:16:18
【问题描述】:

我正在尝试通过 EMR 在 spark 2.0 中将日志写为 json。 我能够使用自定义 log4j.properties 文件。

但是当我尝试使用自定义类 (net.logstash.log4j.JSONEventLayoutV1) 将输出更改为 json 时,出现以下异常:

log4j:ERROR Could not instantiate class [net.logstash.log4j.JSONEventLayoutV1].
java.lang.ClassNotFoundException: net.logstash.log4j.JSONEventLayoutV1
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
    at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:327)
    at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:124)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:797)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at org.apache.spark.internal.Logging$class.initializeLogging(Logging.scala:117)
    at org.apache.spark.internal.Logging$class.initializeLogIfNecessary(Logging.scala:102)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.initializeLogIfNecessary(CoarseGrainedExecutorBackend.scala:161)
    at org.apache.spark.internal.Logging$class.log(Logging.scala:46)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.log(CoarseGrainedExecutorBackend.scala:161)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.run(CoarseGrainedExecutorBackend.scala:172)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.main(CoarseGrainedExecutorBackend.scala:270)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend.main(CoarseGrainedExecutorBackend.scala)

log4j.properties 如下所示:

log4j.rootCategory=INFO, json

log4j.appender.json=org.apache.log4j.ConsoleAppender 
log4j.appender.json.target=System.err 
log4j.appender.json.layout=net.logstash.log4j.JSONEventLayoutV1

工件“jsonevent-layout”,组装在 fat-jar 中。

有人知道如何解决这个问题吗?

谢谢, 伊然

【问题讨论】:

    标签: apache-spark log4j emr amazon-emr


    【解决方案1】:

    最终,这对我有用:

    log4j.rootCategory=INFO, json
    
    log4j.appender.json=org.apache.log4j.ConsoleAppender
    log4j.appender.json.target=System.err
    log4j.appender.json.layout=org.apache.hadoop.log.Log4Json
    

    【讨论】:

      猜你喜欢
      • 2019-04-19
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      相关资源
      最近更新 更多