scala.Function0在scala中运行spark simple WordCount

scala.Function0在scala中运行spark simple WordCount,scala,apache-spark,sbt,bigdata,data-science,Scala,Apache Spark,Sbt,Bigdata,Data Science,我试图运行一个简单的程序,用spark计算scala中的单词。我自己在linux中完成了所有安装,但我无法执行,因为我遇到了以下错误: java.lang.ClassNotFoundException: scala.Function0 at sbt.internal.inc.classpath.ClasspathFilter.loadClass(ClassLoaders.scala:74) at java.lang.ClassLoader.loadClass(ClassLoader.java:3

我试图运行一个简单的程序,用spark计算scala中的单词。我自己在linux中完成了所有安装,但我无法执行,因为我遇到了以下错误:

java.lang.ClassNotFoundException: scala.Function0
at sbt.internal.inc.classpath.ClasspathFilter.loadClass(ClassLoaders.scala:74)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.twitter.chill.KryoBase$$anonfun$1.apply(KryoBase.scala:41)
at com.twitter.chill.KryoBase$$anonfun$1.apply(KryoBase.scala:41)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.immutable.Range.foreach(Range.scala:160)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at com.twitter.chill.KryoBase.<init>(KryoBase.scala:41)
at com.twitter.chill.EmptyScalaKryoInstantiator.newKryo(ScalaKryoInstantiator.scala:57)
at org.apache.spark.serializer.KryoSerializer.newKryo(KryoSerializer.scala:96)
at org.apache.spark.serializer.KryoSerializerInstance.borrowKryo(KryoSerializer.scala:292)
at org.apache.spark.serializer.KryoSerializerInstance.<init>(KryoSerializer.scala:277)
at org.apache.spark.serializer.KryoSerializer.newInstance(KryoSerializer.scala:186)
at org.apache.spark.serializer.KryoSerializer.supportsRelocationOfSerializedObjects$lzycompute(KryoSerializer.scala:193)
at org.apache.spark.serializer.KryoSerializer.supportsRelocationOfSerializedObjects(KryoSerializer.scala:189)
at org.apache.spark.shuffle.sort.SortShuffleManager$.canUseSerializedShuffle(SortShuffleManager.scala:187)
at org.apache.spark.shuffle.sort.SortShuffleManager.registerShuffle(SortShuffleManager.scala:99)
at org.apache.spark.ShuffleDependency.<init>(Dependency.scala:90)
at org.apache.spark.rdd.ShuffledRDD.getDependencies(ShuffledRDD.scala:87)
at org.apache.spark.rdd.RDD$$anonfun$dependencies$2.apply(RDD.scala:239)
at org.apache.spark.rdd.RDD$$anonfun$dependencies$2.apply(RDD.scala:237)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.rdd.RDD.dependencies(RDD.scala:237)
at org.apache.spark.scheduler.DAGScheduler.getShuffleDependencies(DAGScheduler.scala:431)
at org.apache.spark.scheduler.DAGScheduler.getOrCreateParentStages(DAGScheduler.scala:380)
at org.apache.spark.scheduler.DAGScheduler.createResultStage(DAGScheduler.scala:367)
at org.apache.spark.scheduler.DAGScheduler.handleJobSubmitted(DAGScheduler.scala:850)
at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1677)
at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1669)
at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1658)
at org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48)
我认为这应该是由于spark和scala版本的原因,但我找不到好的解决方案

我的build.sbt如下所示:

name := "com.example.test"
version := "0.1"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.2.0",
  "org.apache.spark" %% "spark-sql" % "2.2.0"
)
如果我在spark shell中执行相同的代码,那么我已经安装了以下版本:

  • 斯卡拉:2.11.8
  • 火花:2.2.0
  • sbt:1.0.2
我也尝试过使用不同的scala版本、spark和其他所有东西,但都不起作用,有人能帮我吗

提前谢谢大家,, 哈维

  • 当我在项目内执行命令sbt时,它显示:

    获取Scala 2.12.3(用于sbt)


我不明白的是,当我在build.sbt中指定scala版本时(Scalaversation:=“2.11.8”)

我假设您试图从Intellij Idea运行此代码。若这是真的,那个么主要问题在于想法的配置

转到文件项目结构全局库,检查是否安装了scala库。Idea使用自己的库和SDK源代码,这就是为什么在shell中一切都可以正常工作的原因

我在纯sbt布局中尝试了您的代码,它使用的是完全相同的
build.sbt
和源文件


一件小事。也许Idea会在运行结束时自动停止所有正在运行的spark会话,但我相信您必须明确停止活动会话。只需将
spark.stop()
放在可执行函数或对象的末尾。

嗨,丹尼斯,非常感谢你的帮助,我正在使用Intellij,但我也在尝试使用sbt运行,但效果不太好。我已经检查了你所说的,它已经安装了scala sdk 2.11.8,所以一切看起来都很好…,最后我创建了一个新项目,它神秘地工作了…,我写了一篇关于创建一个新项目的评论,只是为了测试它是一个系统问题还是与项目相关。很高兴你一切顺利。:)
name := "com.example.test"
version := "0.1"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.2.0",
  "org.apache.spark" %% "spark-sql" % "2.2.0"
)