Ejecución del ejemplo de spark scala falla
intellij-idea apache-spark (4)
Soy nuevo en Spark y Scala. Creé un proyecto IntelliJ Scala con SBT y agregué algunas líneas para build.sbt.
name := "test-one"
version := "1.0"
scalaVersion := "2.11.2"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.1.0"
Mi versión de Scala es 2.10.4 pero este problema también ocurre con 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
Intentó buscar en línea, la mayoría de las respuestas apuntan a una falta de coincidencia entre las versiones de API y la versión de Scala, pero ninguna es específica de Spark.
Baja la versión scala a 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"
Este es un problema de compatibilidad de versiones. Spark_core 2.10 es compilación usando Scala 2.10, y su archivo sbt menciona que está usando scala 2.11. Baja tu versión scala a 2.10 o actualiza tu chispa a 2.11
spark-core_2.10
está diseñado para usar con las versiones 2.10.x de scala. Deberías usar
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.0"
que seleccionará la versión _2.10 o _2.11 correcta para su versión scala.
También asegúrese de compilar contra las mismas versiones de scala y spark que las del clúster donde ejecuta esto.
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"
)
Esta configuración funcionó para mí.