sparkstreaming连接kafka

sparkstreaming连接kafka

SparkStreaming从kafka中获取数据时采取KafkaUtils.createDirectStream这个方法来获取StreamingContext对象规定时间内对应kafka分区产生的消息
源码传参解析:
在这里插入图片描述
首先是规定泛型:
分别为K,V,KD,VD,R
按照源码中注释的部分解析
1.k与v分别是存储于kafka的消息的key与value的类型
2.KD,VD的类型可是看出是Decoder[T]类的子类,也就是kafkakey与value的类型序列化类型,kafka已经提供了这样的序列化类型,例如string的序列化类型StringDecoder(注意这个stringDecode类型的编码集是utf-8)
3.R则是返回的InputDStream对象中的规定的类型

接下来看传参:
分别为StreamingContext对象,Map[String, String]与Map[TopicAndPartition, Long]的map,messageHandler: MessageAndMetadata[K, V] => R
1.StreamingContext对象不必多说 就是我们确定spark伪实时时间的对象
2.Map[String, String]集合kafkaParams,通过注释与命名可以看出是一个用于配置的map集合,用于规定kafa配置中的metadata.broker.list(kafka broker块的地址)等。
在这里插入图片描述

3.fromOffsets: Map[TopicAndPartition, Long],fromOffsets规定的在一个map集合中规定分区与偏移量,Long类型为偏移量,而对于opicAndPartition对象,我们看源码
在这里插入图片描述
我们只需要传输一个 kakfa中的主题名,及其对应的分区(int)即可
示例:
在这里插入图片描述
4.messageHandler: MessageAndMetadata[K, V] => R,这个方法主要将
MessageAndMetadata对象中的数据返回
在这里插入图片描述
这个对象可以获取的参数是topic和partition通过 key和massage方法反序列化kafka传递的内容
这个对象可以获取到当前传输信息的key,massage,topic,partition 例如:
在这里插入图片描述
示例只传递了message(R泛型对应的类型),这就是kafka中一条消息的message,同时可以调用mmd中的key方法获取key值或者直接获取其他属性组成元组
在这里插入图片描述
最终通过传参调用方法返回流对象,可以把其当成rdd来处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值