我正在尝试整合Spark流媒体和Kafka。我在intellij idea IDE中编写了我的源代码;编译器编译代码时没有任何错误,但是当我尝试构建jar文件时,会生成一条错误消息,显示:
错误:scalac:错误的符号引用。 KafkaUtils.class中的签名 是指无法获得的包装中的术语kafka。有可能 从当前的类路径或版本中完全丢失 类路径可能与使用时的版本不兼容 编译KafkaUtils.class。
我在google上做过研究,很多人说这是因为Scala版本和spark_streaming_kafka
jar文件之间的版本不同。但我检查了版本,它们是一样的。
有人知道为什么会发生此错误吗?
以下是更多详情:
scala版本:2.10 spark kafka jar版本:spark_streaming_kafka_2.10-1.20.jar,spark_streaming_2.10-1.20.jar
我的源代码:
object Kafka {
def main(args: Array[String]) {
val master = "local[*]"
val zkQuorum = "localhost:2181"
val group = ""
val topics = "test"
val numThreads = 1
val conf = new SparkConf().setAppName("Kafka")
val ssc = new StreamingContext(conf, Seconds(2))
val topicpMap = topics.split(",").map((_, numThreads.toInt)).toMap
val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicpMap).map(_._2)
val words = lines.flatMap(_.split(" "))
words.print()
ssc.start()
ssc.awaitTermination()
}
}