私はSparkとScalaの両方に慣れていない。SBTでIntelliJ Scalaプロジェクトを作成し、build.sbtに数行を追加した。
name := "test-one"
version := "1.0"
scalaVersion := "2.11.2"
libraryDependencies += "org.Apache.spark" % "spark-core_2.10" % "1.1.0"
Scalaの私のバージョンは2.10.4ですが、この問題は2.11.2でも発生します
Exception in thread "main" Java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
at akka.util.Collections$EmptyImmutableSeq$.<init>(Collections.scala:15)
at akka.util.Collections$EmptyImmutableSeq$.<clinit>(Collections.scala)
at akka.japi.Util$.immutableSeq(JavaAPI.scala:209)
at akka.actor.ActorSystem$Settings.<init>(ActorSystem.scala:150)
at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:470)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:111)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:104)
at org.Apache.spark.util.AkkaUtils$.org$Apache$spark$util$AkkaUtils$$doCreateActorSystem(AkkaUtils.scala:121)
at org.Apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:54)
at org.Apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:53)
at org.Apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:1446)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:160)
at org.Apache.spark.util.Utils$.startServiceOnPort(Utils.scala:1442)
at org.Apache.spark.util.AkkaUtils$.createActorSystem(AkkaUtils.scala:56)
at org.Apache.spark.SparkEnv$.create(SparkEnv.scala:153)
at org.Apache.spark.SparkContext.<init>(SparkContext.scala:203)
at TweeProcessor$.main(TweeProcessor.scala:10)
at TweeProcessor.main(TweeProcessor.scala)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.Java:134)
Caused by: Java.lang.ClassNotFoundException: scala.collection.GenTraversableOnce$class
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)
... 23 more
オンラインで調べてみると、ほとんどの回答はAPIバージョンとScalaバージョンの不一致を示していますが、Sparkに固有のものはありません。
spark-core_2.10
は、2.10.xバージョンのscalaで使用するために構築されています。あなたが使用する必要があります
libraryDependencies += "org.Apache.spark" %% "spark-core" % "1.1.0"
scalaバージョン。
また、同じバージョンのscalaおよびsparkこれを実行しているクラスター上のバージョンと同じ)に対してコンパイルしていることを確認してください。
scalaバージョンを2.10.4にダウングレードします
name := "test-one"
version := "1.0"
//scalaVersion := "2.11.2"
scalaVersion := "2.10.4"
libraryDependencies += "org.Apache.spark" % "spark-core_2.10" % "1.1.0"
scalaVersion := "2.11.1"
libraryDependencies ++= Seq(
"org.Apache.spark" % "spark-core_2.11" % "2.2.0",
"org.Apache.spark" % "spark-sql_2.11" % "2.2.0"
)
この構成はうまくいきました。
これはバージョンの互換性の問題です。 Spark_core 2.10はscala 2.10を使用してビルドされ、sbtファイルはあなたがscala 2.11。を使用していることに言及しています。scalaバージョンを2.10にするか、spark= 2.11にアップグレードします