scala - oozie Spark 2.0 操作给出异常 : java. lang.NoClassDefFoundError: org/apache/spark/internal/Logging

标签 scala hadoop apache-spark oozie

我在尝试使用 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。我已将所有 Spark 2.0 依赖项包含在我的 pom 文件中。

我在cloudera文档中读到不支持Oozie Spark2 Action。这就是我收到此异常的原因吗?如果是,还有其他方法可以使用 oozie 运行 Spark 2.0 作业吗?

最佳答案

我也遇到了这个问题,并找到了解决方法。创建一个 Oozie Shell 操作,使用必要的参数调用 spark2-submit

否则,如果您更愿意在 CDH 上使用 Spark 操作,您可以考虑在 1.6 中重写代码。

关于scala - oozie Spark 2.0 操作给出异常 : java. lang.NoClassDefFoundError: org/apache/spark/internal/Logging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48174138/

相关文章:

scala - 如何在一种情况下对每个数字类进行模式匹配?

android - 如何找到 android 项目支持的实际最小 API 级别?

scala - Play 框架 Scala 模板

sorting - 对Mapreduce数据集进行排序

java - 如何在 Hadoop 中使用 CompressionCodec

apache-spark - 如何使用 Spark DataFrames 进行分层抽样?

scala - Scala,currying和重载

hadoop - Hadoop批处理需要记录数

python - 在 YARN 上运行的 Spark 如何计算 Python 内存使用量?

java - 如何通过更改架构和添加其他属性将 DataFrame 从 Spark 保存到 Cassandra 表