1. 程式人生 > 實用技巧 >記一個CDS的細節錯誤(java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe)

記一個CDS的細節錯誤(java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe)

在使用 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.儲存重啟,問題解決