Spark接入kafka的jar問題

首先spark的實時處理分爲  sparkStreaming和structured streaming 倆中處理方式

sparkStreaming  需要引入 

<dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-streaming-kafka-0-8_${scala.compat.version}</artifactId>
   <version>${spark.version}</version>
 </dependency>

其中  scala.compat.version 爲scala的版本    0-8指的是kafka需要什麼版本的要求

描述信息 spark-streaming-kafka-0-8 spark-streaming-kafka-0-10
kafka版本 0.8.2.1 or higher 0.10.0 or higher
穩定程度 Stable Experimental
語言支持 Scala, Java, Python Scala, Java
Receiver DStream Yes No
Direct DStream Yes Yes
SSL TLS Support No Yes
Offset Commit Api No Yes
Dynamic Topic Subscription No Yes

從上面的表格可以看出 spark-streaming-kafka-0-8目前是支持版本大於或等於0.8.2.1時需要用到的

spark-streaming-kafka-0-10則需要kafka的版本是0.10.0以上才能支持

 

 

對於structured streaming 則需要引入

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-sql-kafka-0-10_2.11</artifactId>
  <version>2.3.0</version>
</dependency>

用法和上面的表格一樣

 

另外:如果進羣環境是cloudera manager  則需要查看spark2中的配置參數SPARK_KAFKA_VERSION的版本

運行則會看到kafka的版本

18/11/01 16:48:04 INFO AppInfoParser: Kafka version : 0.9.0.0
18/11/01 16:48:04 INFO AppInfoParser: Kafka commitId : cb8625948210849f

原因分析
      其實這個在官方文檔中有介紹。地址如下:
https://www.cloudera.com/documentation/spark2/latest/topics/spark2_kafka.html#running_jobs
       簡單說,就是kafka集成spark2,需要在CDH中進行設置。官網介紹了2中方法。這裏我採用了第二種,在CDH中進行修改配置的方法。

步驟如下:

1.進入CDH的spark2配置界面,在搜索框中輸入SPARK_KAFKA_VERSION,出現如下圖,

2.然後選擇對應版本,這裏我應該選擇的是None,

    即 : 選用集羣上傳的Kafka-client 版本 !!

3.然後保存配置,重啓生效。
 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章