Spark Streaming StreamingContext错误

时间:2014-10-22 16:31:03

标签: java eclipse scala streaming apache-spark

我是一名正在尝试学习Scala + Spark Streaming的Java资深人士。 我下载了基于Eclipse的Scala IDE + Spark核心jar + Spark Streaming jar 2.10并试用了这个例子 - 我收到了错误:

val ssc = new StreamingContext(conf, Seconds(1));
  

描述资源路径位置键入错误的符号引用。一个   StreamingContext.class中的签名是指包中的术语conf   org.apache.hadoop不可用。它可能完全缺失   从当前的类路径,或类路径上的版本可能是   与编译时使用的版本不兼容   StreamingContext.class。 Lab.scala / AirStream / src第10行Scala问题

我在这里错过了什么吗?所有SparkContext都没有错误,但StreamingContext正在及时收到此错误。

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。这里通常是我为scala / spark练习编写的scala类:

package practice.spark

import org.apache.spark.SparkContext._
import org.apache.spark._
import org.apache.spark.sql._

object SparkService {
  def sparkInit(sparkInstanceConfig: Configuration): SparkService = {
    val sparkConf = new SparkConf().setAppName(sparkInstanceConfig.appName)
    val instanceSpark = new SparkService(sparkConf)
    return instanceSpark
  }
}

class SparkService(sparkConf: SparkConf) {
  val sc = new SparkContext(sparkConf)
  val sql = new org.apache.spark.sql.SQLContext(sc)
}

在我的eclipse项目属性> Java Build Path> Libraries我有jre8库,scala 2.11库,spark-core_2.11和spark-sql_2.11。我收到了错误

  

描述资源路径位置类型   加载类文件' SparkContext.class'时检测到缺失或无效的依赖项。无法访问org.apache包中的术语hadoop,因为它(或其依赖项)缺失。检查构建定义是否存在缺失或冲突的依赖项。 (使用-Ylog-classpath重新运行以查看有问题的类路径。)完整重建可能有助于“SparkContext.class'是针对org.apache的不兼容版本编译的。 BinAnalysis新的未知Scala问题

然后我将hadoop-core jar添加到我的Java构建路径中,它解决了这个问题。我使用了那个罐子的最新版本。

也可以使用gradle或其他一些构建工具清除此问题,该工具将获取项目中使用的每个jar的所有依赖项。

答案 1 :(得分:1)

确保类路径上的hadoop版本与构建spark spark jar的版本相匹配。可能还有一些依赖关系,火花传输期望由集群环境提供;如果是这样的话,你需要在eclipse中运行时手动将它们添加到类路径中。