在使用 CDH 提交 Kafka-SparkStreaming 作業的時候遇上了一個版本問題,特此記錄:
主要報錯信息:
Exception in thread "streaming-start" java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/Collection;
產生這個錯誤的原因是運行時使用的 Kafka-Client 版本高於 CDS 默認的 Kafka-Client 版本
原因分析:
通過官網介紹:https://www.cloudera.com/documentation/spark2/latest/topics/spark2_kafka.html#running_jobs。在 KAFKA 集成 SPARK2 時,需要在 CDH 中進行設置。官網介紹了兩種方法,這里采用第二種。
更改步驟:
1.進入 CDH 的 Spark2 配置界面,在搜索框中輸入 "SPARK_KAFKA_VERSION",如圖
可以看到,默認是 0.9 版本,如果不去修改,在運行時會因為版本問題導致報錯。
2.選擇對應的版本。當前 CDK 的版本是4.1.0,對應 KAFKA 版本為 2.2.1,此時可以選擇 NONE ,即選用集群上的 KAFKA-CLIENT
3.保存重啟,問題解決