我正在使用Kafka 0.9.0和Spark 2.1.0 我的Spark提交如下:
./spark-submit --jars /home/cnbo/jars/spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar --class ClickStream /home/cnbo/jars/sparkstreamingfi_2.11-0.1.jar
我收到以下错误:
java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/Collection;)V
我知道版本冲突为0.9到0.10。但我想在Kafka 0.9.0上运行我的应用程序。 现在需要做什么? 我应该使用什么外部jar而不是:
spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar
先谢谢!!
答案 0 :(得分:2)
为了将Spark与Kafka一起使用,您还需要在spark.driver.extraClassPath
&中添加以下JAR。 spark.executor.extraClassPath
:
/home/cnbo/jars/kafka-clients-0.9.0.0.jar
由于spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar
不包含KafkaConsumer
,我们还需要添加上述JAR文件。所以,最终的spark-submit
命令将是这样的:
./ spark-submit --jars /home/cnbo/jars/spark-sql-kafka-0-10_2.11-2.1.0.cloudera1.jar:/home/cnbo/jars/kafka-clients-0.9 .0.0.jar --class ClickStream /home/cnbo/jars/sparkstreamingfi_2.11-0.1.jar
我希望它有所帮助!
答案 1 :(得分:1)
如果您阅读了Spark Kafka页面,那么您已经看过
0.8集成与后来的 0.9 和0.10代理兼容,但 0.10集成与早期代理不兼容
因此,你需要这个库
spark-streaming-kafka-0-8_2.11
如果您想要结构化流媒体,您需要实际升级Kafka以支持新的消费者API