我编写了一个spark流应用程序,它从kafka读取数据。我已经用它做了jar spark1.6.0
以及 kafka0.8.2.2
. 我正在使用kafka direct stream API: KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicSet)
当我在yarn client模式下运行应用程序时,它会成功运行,但当我在yarn cluster模式下运行时,它会失败,出现以下异常:
User class threw exception: java.lang.NoClassDefFoundError: kafka/api/TopicMetadataRequest.
我在应用程序jar中打包了kafka类,甚至在运行时,kafka/api/topicmetadatarequest也会从应用程序jar中加载。
据我所知, NoClassDefFoundError
当编译和运行时之间存在版本不匹配时将发生。
3条答案
按热度按时间xxslljrj1#
KafkaUtils
在spark中不可用,您必须添加spark-streaming-kafka
模块单独添加到spark应用程序。你应该使用
--packages
命令行选项。为scala和spark使用合适的版本。
jm2pwxwz2#
--
我的.sbt有以下块:
有什么建议如何解决这个问题,或者为什么会发生这个异常?
laik7k3q3#
-编辑