大数据知识杂谈

spark streaming 集成kafka0.10 offs

2018-06-01  本文已影响0人  稻草人_d41b

       spark streaming+kafka 0.10集成默认spark partition和kafka partition数量是1:1,这样可以使得每个spark partition对应一个kafka partition。将spark partition中kafka consumer进行缓存,在每次获取新数据时可以利用CachedKafkaConsumer消费,只需要修改offsetRange值。附:spark-streaming-kafka-0.10 jar包结构

这次主要分析的是kafkautils、DirectKafkaInputDstream类。spark streaming +kafka 0.10版本消费kafka消息执行流程分析:1:在spark-streaming 每一次遍历kafkastreamingDstream rdd时提交设置好的offsetRange到kafka中 offsetRange提交到kafka方法 2、kafkastreamingDstream消费kafka时先判断kc缓存的kakfa consumer是否为空,为空则新创建kafka consumer客户端。只有第一次启动时候为空,后面都不为空。 3、rdd具体执行函数是compute方法。在compute方法中生成每个partition下offsetRange信息提供给partition下kafka consumer进行消息消费。 形成的partition执行信息,分发给各个spark partition 4、在compute中生成offsetRange具体方法。其中currentOffsets在第一次初始化时为空,后续给每个spark partition分发执行信息时把生成的untiloffset赋值给currentOffsets spark定义每秒 每个分区可以获取消息的最大值乘以窗口时间,来计算每一批次,一个partition可以获取在的消息数量。将currentOffsets中获取的offset+每个批次获取数据量的数据,构成offsetRnage信息。
上一篇 下一篇

猜你喜欢

热点阅读