oozie spark 2.0 action giving exception: java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
oozie spark 2.0 action giving exception: java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
我在尝试使用 oozie
运行 触发操作时遇到以下异常
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.access0(URLClassLoader.java:73)
at java.net.URLClassLoader.run(URLClassLoader.java:368)
at java.net.URLClassLoader.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.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 文件中包含了所有 spark 2.0 依赖项。
我在 cloudera 文档中读到不支持 Oozie Spark2 操作。这就是我得到这个例外的原因吗?如果是,是否还有其他方法可以使用 oozie 运行 spark 2.0 作业?
我也遇到了这个问题,并且能够找到解决方法。创建一个 Oozie Shell 操作,使用您的必要参数调用 spark2-submit
。
否则,如果您更愿意在 CDH 上使用 spark 操作,您可以考虑在 1.6 中重写代码。
根据 CDH 社区文档,oozie 与 spark2.0 不兼容。
所以你应该将 oozie 与 spark1.6
一起使用
下面是CDH参考的link - https://www.cloudera.com/documentation/spark2/latest/topics/spark2_known_issues.html#ki_oozie_spark_action
快乐学习:)
您可以选择为 spark2 设置 oozie 共享库,然后通过在 job.properties
或 workflow.xml
spark 操作中将 oozie.action.sharelib.for.spark=spark2
设置为
<property>
<name>oozie.action.sharelib.for.spark</name>
<value>spark2</value>
</property>
要为 spark2 设置 oozie 共享库,请遵循 hortonworks documnet section Configuring Oozie Spark Action for Spark 2。在 CDH 中可以遵循相同的步骤,但指定的路径需要根据 CDH 集群设置进行修改。我在 cdh 中使用 oozie spark 操作成功执行了 spark2 作业。
我在尝试使用 oozie
运行 触发操作时遇到以下异常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.access0(URLClassLoader.java:73)
at java.net.URLClassLoader.run(URLClassLoader.java:368)
at java.net.URLClassLoader.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.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 文件中包含了所有 spark 2.0 依赖项。
我在 cloudera 文档中读到不支持 Oozie Spark2 操作。这就是我得到这个例外的原因吗?如果是,是否还有其他方法可以使用 oozie 运行 spark 2.0 作业?
我也遇到了这个问题,并且能够找到解决方法。创建一个 Oozie Shell 操作,使用您的必要参数调用 spark2-submit
。
否则,如果您更愿意在 CDH 上使用 spark 操作,您可以考虑在 1.6 中重写代码。
根据 CDH 社区文档,oozie 与 spark2.0 不兼容。 所以你应该将 oozie 与 spark1.6
一起使用下面是CDH参考的link - https://www.cloudera.com/documentation/spark2/latest/topics/spark2_known_issues.html#ki_oozie_spark_action
快乐学习:)
您可以选择为 spark2 设置 oozie 共享库,然后通过在 job.properties
或 workflow.xml
spark 操作中将 oozie.action.sharelib.for.spark=spark2
设置为
<property>
<name>oozie.action.sharelib.for.spark</name>
<value>spark2</value>
</property>
要为 spark2 设置 oozie 共享库,请遵循 hortonworks documnet section Configuring Oozie Spark Action for Spark 2。在 CDH 中可以遵循相同的步骤,但指定的路径需要根据 CDH 集群设置进行修改。我在 cdh 中使用 oozie spark 操作成功执行了 spark2 作业。