我是一名正在尝试学习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正在及时收到此错误。
答案 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中运行时手动将它们添加到类路径中。