2016-12-28 4 views
1

EMR을 통해 spark 2.0에서 json으로 로그를 쓰려고합니다. 사용자 정의 log4j.properties 파일을 사용할 수있었습니다.사용자 지정 log4j 클래스가 spark 2.0 이상 작동하지 않습니다. EMR

그러나 나는, 나는 다음과 같은 예외 얻을 사용자 정의 클래스 (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에 조립되었습니다.

누구든지이 문제를 해결하는 방법을 알고 있습니까?

덕분에, 결국

답변

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