Spark 2.1.0与Kafka 0.9.0的连接

时间:2018-05-26 09:23:05

标签: apache-spark apache-kafka spark-structured-streaming

我正在使用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

先谢谢!!

2 个答案:

答案 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