Spark日志记录的CustomLayout

时间:2018-01-10 16:23:50

标签: apache-spark

我在运行spark应用程序时遇到了一个奇怪的问题。对于我的应用程序(spark和non spark),我们编写了一个自定义的JsonLogLayout来记录Json格式的消息。

使用以下命令运行spark作业时,日志将以JSON格式编写。到目前为止一切顺利

  

spark-submit --verbose --files“/tmp/log4j.properties”     --driver-java-options“-Dconf.dir = / etc / myapp / conf      -Dlog4j.configuration =文件:///tmp/log4j.properties“
   --conf“spark.driver.extraJavaOptions = -Dconf.dir = / etc / myapp / conf -Dlog4j.configuration = file:///tmp/log4j.properties”    --class myapp.TestSpark.TestApp target / TestSpark-0.0.1-SNAPSHOT-jar-with-dependencies.jar

由于我们的环境是安全的,我们使用kerberos,我需要将 keytab和主要信息传递给spark工作。所以现在命令如下

  

spark-submit --verbose --files“/tmp/log4j.properties”--driver-java-options“-Dconf.dir = / etc / myapp / conf -Dlog4j.configuration = file:/// tmp /log4j.properties”   --conf“spark.driver.extraJavaOptions = -Dconf.dir = / etc / myapp / conf -Dlog4j.configuration = file:///tmp/log4j.properties”--keytab /etc/security/keytabs/application.keytab --principal myapp_runtime@MYAPP.DEV.TEST.COM --class myapp.TestSpark.TestApp target / TestSpark-0.0.1-SNAPSHOT-jar-with-dependencies.jar

从这里火花工作开始失败。我收到了以下错误

 `  java.lang.ClassNotFoundException: myapps.custom.layout.JsonLogLayout
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    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(L`

我不确定为什么火花会引发此错误,我该如何解决?

0 个答案:

没有答案