Streaming kafka 报错:java.lang.ClassCastException: kafka.cluster.BrokerEndPoint cannot be cast to kaf

本文介绍了一个在使用Spark Streaming读取Kafka消息时遇到的ClassCastException错误,并详细解释了错误原因,即pom文件中kafka_2.11和spark-streaming-kafka-0-8_2.11依赖冲突。文章最后提供了解决方案,通过注释掉kafka_2.11依赖来避免冲突。

一、问题描述

使用SparkStreaming读取kafka消息,采用Direct的方法读取,然后,在idea中调试时,报错:

19/12/08 17:11:31 INFO BlockManager: Initialized BlockManager: BlockManagerId(driver, 192.168.31.1, 61291, None)
Exception in thread "main" java.lang.ClassCastException: kafka.cluster.BrokerEndPoint cannot be cast to kafka.cluster.Broker
    at org.apache.spark.streaming.kafka.KafkaCluster$$anonfun$2$$anonfun$3$$anonfun$apply$6$$anonfun$apply$7.apply(KafkaCluster.scala:97)
    at scala.Option.map(Option.scala:146)
    at org.apache.spark.streaming.kafka.KafkaCluster$$anonfun$2$$anonfun$3$$anonfun$apply$6.apply(KafkaCluster.scala:97)
    at org.apache.spark.streaming.kafka.KafkaCluster$$anonfun$2$$anonfun$3$$anonfun$apply$6.apply(KafkaCluster.scala:94)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)

二、问题原因

竟然时因为pom文件中kafka_2.11和spark-streaming-kafka-0-8_2.11两个依赖有冲突导致。

    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
      <version>2.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.kafka</groupId>
      <artifactId>kafka_2.11</artifactId>
      <version>${kafka.version}</version>
    </dependency>

三、解决方法

注释kafka_2.11依赖

    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
      <version>2.1.0</version>
    </dependency>
    <!--<dependency>-->
      <!--<groupId>org.apache.kafka</groupId>-->
      <!--<artifactId>kafka_2.11</artifactId>-->
      <!--<version>${kafka.version}</version>-->
    <!--</dependency>-->


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值