spark streaming消费kafka maven依赖选择

当我们的spark streaming程序需要消费kafka数据,我们需要根据自己的spark版本和kafka broker版本选择合适的maven依赖

  spark-streaming-kafka-0-8 spark-streaming-kafka-0-10
支持的kafka版本 0.8+ 0.10+
依赖包使用的spark版本 2.0-及2.0+ 2.0+
消费方式 直连及基于消费者 直连
偏移存储方式 直连自己处理,基于消费者存zk 存kafka topic里
兼容性 与0.8+的kafka都兼容 与0.10-的kafka版本不兼容

注意:0.8+表示0.8版本及0.8以上的版本,-同理

首先,我们来看kafka的版本

如果kafka是在apache下的kafka,比如kafka_2.11-2.0.0,2.11表示scala版本,2.00表示kafka的版本

如果是cdh下载parcel包装的kafka,可参照如下表格

spark streaming消费kafka maven依赖选择_第1张图片

比如3.0.0-1.3.0.0.p0.40,则对应的kafka版本是0.11.0,3.1.1-1.3.1.1.p0.2对应的kafka版本是1.01,

也可到kafka下看jar包的版本便可知kafka版本

接下来我们看spark的版本,如果使用cdh默认的spark,则spark版本默认1.6,如果升级过,则为升级后的版本,

2.0,2.1.....

该选择maven依赖了,去maven仓库搜索spark streaming消费kafka maven依赖选择_第2张图片

可以看到有三种依赖,第一种和第二种是代码是一样的,区别是第一种支持spark早期版本,第二种支持spark1.6以后版本,这两种kafka版本都为0.8.21,故只讨论第二种。

以下为第一种的

spark streaming消费kafka maven依赖选择_第3张图片

先看0-8的

spark streaming消费kafka maven依赖选择_第4张图片

再看0-10的,kakfa版本为0.10.1

spark streaming消费kafka maven依赖选择_第5张图片

version表示spark版本,scala表示scala版本,date列是日期

可根据自己的spark版本和kafka版本选择适合自己的依赖,spark版本没那么强关联,注意有的在低版本的开发者api,到高版本成了包私有的,比如KafkaCluster(在0-8为开发者api,在spark-streaming-kakfa为包私有),Logging(在1.6为开发者api,1.6以后为包私有)

这两种推荐使用0-10,无需自己管理偏移,直接调api将偏移存到kafka的topic里。

 

你可能感兴趣的:(kafka,spark,streaming)