【问题标题】:Running spark scala example fails运行 spark scala 示例失败
【发布时间】:2017-10-03 05:45:27
【问题描述】:

我是 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。

【问题讨论】:

    标签: scala intellij-idea apache-spark


    【解决方案1】:

    spark-core_2.10 是为与 2.10.x 版本的 scala 一起使用而构建的。你应该使用

    libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.0"
    

    这将为您的 scala 版本选择正确的 _2.10 或 _2.11 版本。

    还要确保您编译的 scala 和 spark 版本与您运行它的集群上的版本相同。

    【讨论】:

    • 更新了代码以使用您所说的样式中的依赖项,客户端代码和 spark 都使用 2.10.4,但仍然存在此错误。我猜这是一个类路径问题。
    • 2.11 还没有 spark-core。
    • 我也面临同样的问题,我有 Scala 和 spark 如下: scala-library:2.11.7 ;火花核心_2.11:2.1.0;火花流_2.11:2.1.0; spark-streaming-kafka-0-8_2.11:2.1.0 ;仍然出现同样的问题
    • 我也已将 kafka 从 kafka_2.10 更新到 kafka_2.11,问题现已解决
    【解决方案2】:

    将 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"
    

    【讨论】:

    • 从 alvinalexander.com/scala/simple-scala-akka-actor-examples-hello-world-actors 跑了一个“akka hello world”并且有同样的错误。设置为 2.10.4 有效。
    【解决方案3】:

    这是版本兼容性问题。 Spark_core 2.10 是使用 scala 2.10 构建的,您的 sbt 文件提到您使用的是 scala 2.11。将您的 scala 版本降级到 2.10 或将您的 spark 升级到 2.11

    【讨论】:

    • 我也面临同样的问题,我有 Scala 和 spark 如下: scala-library:2.11.7 ;火花核心_2.11:2.1.0;火花流_2.11:2.1.0; spark-streaming-kafka-0-8_2.11:2.1.0 ;仍然出现同样的问题
    • 我也已将 kafka 从 kafka_2.10 更新到 kafka_2.11,问题现已解决
    【解决方案4】:
    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"
             )
    

    这个配置对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多