kafka版本不匹配问题

最近开发spark+kafka项目但是却遇到了很多的坑,比如

Exception in thread "main" java.lang.ClassCastException: kafka.cluster.BrokerEndPoint cannot be cast to kafka.cluster.Broker

这个问题比较坑,突然间一看还真的以为自己不小心写了一个类型转化的错误呢,但是实际上不是。本人开发程序用的是spark2.1+kafka0.10.0.0但是在引用maven时引用错误


<dependency>
    <groupId>org.apache.kafkagroupId>
    <artifactId>kafka_2.10artifactId>
    <version>0.10.0.0version>
dependency>

后来我换了maven依赖,换为

<dependency>
    <groupId>org.apache.sparkgroupId>
    <artifactId>spark-streaming-kafka-0-10_2.11artifactId>
    <version>2.1.1version>
dependency>

这个错误报错就没了
然而这个时候我想要使用kafkautils类却发现怎么导报都不成功
包名为

import org.apache.spark.streaming.kafka.KafkaUtils

后来发现人家已经改名了,所以我才导包不成功

import org.apache.spark.streaming.kafka010.KafkaUtils

包的kafka后面加了一个010.
换了这个包肯定要使用啊,但是我发现这个类也已经变了,(真是女大十八变啊)

所以使用时就变成了

    val kafkaParams = Map(
      "bootstrap.servers" ->KafkaConfUtils.getProp("bootstrap.servers"),
      "group.id" -> "group1",
       "value.deserializer" ->KafkaConfUtils.getProp("value.deserializer"),
       "key.deserializer" ->KafkaConfUtils.getProp("key.deserializer")
    )

    var topic=Array("taskcompare");

    var  lines: InputDStream[ConsumerRecord[String, String]] =  KafkaUtils.createDirectStream[String,String](ssc, PreferConsistent,Subscribe[String,String](topic,kafkaParams))

其中的PreferConsistent,Subscribe都是来自于kafka010的包中的类。

你可能感兴趣的:(Spark,kafka)