我在尝试使用oozie运行spark操作时遇到以下异常
ERROR yarn.ApplicationMaster: User class threw exception: java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
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 org.apache.spark.sql.SparkSession$.builder(SparkSession.scala:861)
at com.spark.morbiditymerge.MorbidityProcessMessage$.main(MorbidityProcessMessage.scala:19)
at com.spark.morbiditymerge.MorbidityProcessMessage.main(MorbidityProcessMessage.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:542)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.internal.Logging
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)
... 20 more
spark代码在eclipse本地运行良好。但是,我在尝试使用oozie运行时遇到了上述异常。
我使用的是spark 2.0和scala 2.11.8。我已经在pom文件中包含了所有spark2.0依赖项。
我在cloudera文档中看到不支持oozie spark2操作。这就是我得到这个例外的原因吗?如果是,是否有其他方法可以使用oozie运行Spark2.0作业?
3条答案
按热度按时间qxgroojn1#
我也遇到了这个问题,并能够找到一个解决办法。创建一个调用
spark2-submit
用你的必要参数。否则,如果您希望在cdh上使用spark操作,您可以考虑在1.6中重写代码。
zkure5ic2#
您可以选择为spark2设置oozie共享库,然后通过设置
oozie.action.sharelib.for.spark=spark2
要么在job.properties
或在workflow.xml
Spark动作组件要为spark2设置oozie共享库,请按照hortonworks documnet部分为spark2配置oozie spark操作。在cdh中可以遵循相同的步骤,但是指定的路径需要根据cdh集群设置进行修改。我正在cdh中使用oozie spark操作成功执行spark2作业。
lqfhib0f3#
根据cdh社区文档oozie与spark2.0不兼容。所以你应该在spark1.6中使用oozie
以下是cdh参考链接-https://www.cloudera.com/documentation/spark2/latest/topics/spark2_known_issues.html#ki_oozie_spark_action
快乐学习:)