Java “中的错误”;用于Scala的Eclipse插件;在编译Spark类时

Java “中的错误”;用于Scala的Eclipse插件;在编译Spark类时,java,scala,apache-spark,cloudera-cdh,Java,Scala,Apache Spark,Cloudera Cdh,我正在使用CDH5.1.0做一些简单的Spark编程。另外,我有EclipseJuno(VM附带)并安装了ScalaIDE插件2.10.0。 我在IDE中遇到以下错误: 错误的符号引用。SparkContext.class中的签名指的是包org.apache.hadoop中的术语io,该术语不可用。当前类路径中可能完全缺少它,或者类路径上的版本可能与编译SparkContext.class时使用的版本不兼容。SimpleApp.scala/MyScalaProject/src/com/test/

我正在使用CDH5.1.0做一些简单的Spark编程。另外,我有EclipseJuno(VM附带)并安装了ScalaIDE插件2.10.0。 我在IDE中遇到以下错误:

错误的符号引用。SparkContext.class中的签名指的是包org.apache.hadoop中的术语io,该术语不可用。当前类路径中可能完全缺少它,或者类路径上的版本可能与编译SparkContext.class时使用的版本不兼容。SimpleApp.scala/MyScalaProject/src/com/test/spark1第10行scala问题

代码:

我在第10行(var conf-new org.apache.spark.SparkCon…)得到了相同的错误 还有第15行(println…)


我的项目构建路径有
/usr/lib/spark/assembly/lib/spark-assembly-1.0-cdh5.1.0-hadoop2.3.0-cdh5.1.0.jar
,我检查了这个简单scala程序的所有必要类是否都在那里。

一旦我在构建路径中添加了以下jar,编译错误就消失了:

hadoop-common-2.3.0-cdh5.1.0.jar

因此,导致此错误的原因是缺少某些内部依赖项

package com.test.spark1
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "/home/Desktop/scala/sparktest.txt" // Should be some file on your system
    val conf = new org.apache.spark.SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println("Lines with a: %s, Lines with b: %s").format(numAs, numBs)
  }
}