报错:kafka.cluster.BrokerEndPoint cannot be cast to kafka.cluster.Brokera![](https://img-blog.csdn.net/20180130145319748?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hqYmlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后百度查了下,说是spark与kafka版本问题冲突。查看了下集群spark1.6,kafka只找到了kafka_2.10-0.9.0-kafka-2.0.0.jar这个jar,估计是0.9版本吧。
怎么解决问题呢?问题根源说是找到了,可是网上找了好久并付之行动就是没找到合适的。根据报错提示定位于spark_stream_kafka的jar与kafka api的jar包,没有好的解决办法,那下载spark1.6源码,将spark_stream_kafka的源码加入到项目,在idea工具上查看两个jar的代码,不存在类转换问题,在报错处println数据,打包到集群运行。
反复修改pom.xml文件,打包运行。错误就仍然照旧同样一条。修改pom.xml文件中,查看了下kafka0.9比0.8多了BrokerEndPoint类,可问题是maven的都是0.8版的,0.9版哪里来的呢,不科学呀!百度呀百度,看到CDH多版本冲突的标题党,灵光一闪,会不会CDH有运行kafka0.9jar,项目maven的jar不生效。经过长久努力,终于查到/opt/cloudera/parcels/CDH/lib/spark/conf/classpath.txt中定义了kafka api 的jar
/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/jars/kafka-clients-0.9.0-kafka-2.0.0.jar
/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/jars/kafka_2.10-0.9.0-kafka-2.0.0.jar
终于松了口气,上传0.8版本的Jar,spark 读取kafka数据OK了,可是在写kafka数据时一直提示自定义分区规则类找不到,多次测试后,果断将两行配置删除掉。