让我们把它放在上下文中。
我在更广泛的程序(Spark / Scala)中运行了一行代码
val dateGroupKVpair: RDD[(String, Iterable[Option[stockPriceInfo]])] =
stockDataFilteredRDD.keyBy(x =>
x.get.ticker + "|" + x.get.dateTime.split("@")(0).split("-")(0) //year
+ x.get.dateTime.split("@")(0).split("-")(1) //month
+ x.get.dateTime.split("@")(0).split("-")(2)).groupByKey.sortBy(_._1, false)
此行导致以下异常
15/10/19 19:33:22 INFO impl.AMRMClientImpl: Waiting for application to be successfully unregistered.
Exception in thread "Driver" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:162)
Caused by: java.lang.NoClassDefFoundError: org/apache/spark/rdd/RDD$
at Job$.main(Job.scala:55)
at Job.main(Job.scala)
... 5 more
Caused by: java.lang.ClassNotFoundException: org.apache.spark.rdd.RDD$
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 7 more
15/10/19 19:33:22 INFO yarn.ApplicationMaster$$anon$1: Invoking sc stop from shutdown hook
在我的build.sbt文件中,我有org / apache / spark / rdd / RDD的依赖项 - 与jar_home中的版本相同。
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.1.0-cdh5.2.1" **intransitive()**
libraryDependencies += "org.apache.spark" % "spark-assembly_2.10" % "1.3.0-cdh5.4.0" **intransitive()**
我知道 intransitive()用于添加仅用于编译的依赖项,并允许jar_home中的jar用于执行。代替不及物(),我也使用"编译" &安培; "提供" ..但仍然抛出相同的例外。我做了一些研究,并且建议使用分片 - 当然假设它是依赖性冲突,但我使用的SBT 13x不支持分片策略。另一种是将我的应用程序修改为 取决于Spark所使用的第三方库的相同版本。我确信我也做到了。
所以我现在没有选择权。你能帮我解决一下吗?