提问者:小点点

Spark StreamingContext错误


我是一名Java老手,正在努力学习Scala Spark Streaming。我下载了基于Eclipse的Scala IDE Spark core jar Spark Streaming jar 2.10并测试了这个例子——我得到了错误:

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

说明资源路径位置类型错误的符号引用。StreamingContext.class中的签名引用了包org.apache.hhadoop中的术语conf,该术语不可用。当前类路径中可能完全缺少它,或者类路径上的版本可能与编译StreamingContext.class.Lab.scala/AirStream/src第10行scala问题时使用的版本不兼容

我错过了什么吗?所有SparkContext都没有错误,但StreamingContext一直出现此错误。


共2个答案

匿名用户

我也遇到了大致相同的问题。以下是我为scala/spark practice编写的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项目属性中

描述加载类文件“SparkContext.class”时检测到资源路径位置类型缺失或无效依赖项。无法访问包org.apache中的术语hadoop,因为它(或其依赖项)缺失。检查生成定义中是否存在缺失或冲突的依赖项。(使用-Ylog classpath重新运行以查看有问题的classpath。)如果根据不兼容的org.apache.BinAnalysisNewUnknown Scala问题编译了“SparkContext.class”,则完全重建可能会有所帮助

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

这个问题也可以通过使用gradle或一些其他构建工具来解决,这些工具将获取项目中使用的每个jar的所有依赖项。

匿名用户

确保类路径上的hadoop版本与spark流媒体jar所针对的版本相匹配。也可能存在一些spark流期望由集群环境提供的依赖关系;如果是这样,则需要在eclipse中运行时手动将它们添加到类路径中。