web-dev-qa-db-fra.com

L'exécution de spark scala échoue)

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.

22
user2003470

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).

23
lmm

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"
10
BlitzKrieg
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.

1
Yash P Shah

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

1
raisashi