Spark接入kafka的jar问题

首先spark的实时处理分为  sparkStreaming和structured streaming 俩中处理方式

sparkStreaming  需要引入 


   org.apache.spark
   spark-streaming-kafka-0-8_${scala.compat.version}
   ${spark.version}
 

其中  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 则需要引入


  org.apache.spark
  spark-sql-kafka-0-10_2.11
  2.3.0

用法和上面的表格一样

 

另外:如果进群环境是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.然后保存配置,重启生效。
 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Spark)