在阶段0.0中丢失任务1.0

时间:2015-03-04 15:17:09

标签: scala apache-spark

我对Spark和Scala很新。我正在尝试做的是简单的WordCount工作。

package demo
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.SparkContext._

object WordCount extends App {
  // Create a Scala Spark Context.
  val conf = new SparkConf().setAppName("wordCount").setMaster("spark://MyHost")
  val sc = new SparkContext(conf)
  // Load our input data.
  val input = sc.textFile("words.txt")
  // Split it up into words.
  val words = input.flatMap(line => line.split(" "))
  // Transform into word and count.
  val counts = words.map(word => (word, 1)).reduceByKey{case (x, y) => x + y}
  // Save the word count back out to a text file, causing evaluation.
  counts.saveAsTextFile("wordsCount.txt")
}

我已经设置了一个Master并启动了一个与Master连接的Worker。

Spark Master

当我运行示例时,我收到以下错误:

Lost task 1.0 in stage 0.0 (TID 1, MyHost): java.lang.ClassNotFoundException: demo.WordCount$$anonfun$2

我真的不知道这意味着什么。

我的build.sbt看起来像这样:

name := "SimpleWordCount"

version := "0.0.1"

scalaVersion := "2.10.4"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "1.2.0" % "provided"
)

2 个答案:

答案 0 :(得分:2)

代码看起来很好,错误告诉你他找不到方法中定义的一个闭包(现在表示为匿名类,因此“ClassNotFound”错误)。它似乎是版本和/或部署问题。我的猜测是jar代码没有部署到spark节点。

首先在build.sbt中使用版本“1.2.1”作为sp​​ark(作为主节点),然后检查http://spark.apache.org/docs/1.2.1/submitting-applications.html如何将jar提交到服务器,第三个可以省略您的代码中的“setMaster”作为提交脚本将暂时处理它。

答案 1 :(得分:1)

您需要将必要的jar设置为spark context

val conf = new SparkConf().setAppName("wordCount").setMaster("spark://MyHost").setJars(Seq("$HOME/WordCount.jar",...))