Je suis nouveau dans les deux Spark et Scala. J'ai créé un projet IntelliJ Scala avec SBT et ajouté quelques lignes à build.sbt.
name := "test-one"
version := "1.0"
scalaVersion := "2.11.2"
libraryDependencies += "org.Apache.spark" % "spark-core_2.10" % "1.1.0"
Ma version de Scala est 2.10.4 mais ce problème se produit également avec 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
Essayé de rechercher en ligne, la plupart des réponses indiquent une incompatibilité entre les versions d'API et Scala version, mais aucune n'est spécifique à Spark.
spark-core_2.10
est conçu pour être utilisé avec les versions 2.10.x de scala. Tu devrais utiliser
libraryDependencies += "org.Apache.spark" %% "spark-core" % "1.1.0"
qui sélectionnera la version _2.10 ou _2.11 correcte pour votre version scala.
Assurez-vous également que vous compilez avec les mêmes versions de scala et spark que celles du cluster sur lequel vous exécutez cela).
Rétrograder la version scala vers 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"
)
Cette configuration a fonctionné pour moi.
Il s'agit d'un problème de compatibilité de version. Spark_core 2.10 est construit en utilisant scala 2.10, et votre fichier sbt mentionne que vous utilisez scala 2.11. Vous pouvez soit rétrograder votre scala version 2.10 ou mettez à niveau votre spark to 2.11