kafka sparkstreaming配置指定偏移量/消息列表大小

hrirmatl  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(300)

我对kafka和spark都很陌生,正在尝试写一个作业(流式或批式)。我想从kafka那里读一个预定义的消息数(比如x),通过workers处理收集,然后只开始处理下一组x消息。基本上,kafka中的每条消息都是10kb,我想在一个s3文件中放入2gb的消息。那么,有没有办法指定接收者获取的消息数量呢?我已经读到在创建dstream时可以指定'from offset',但是这个用例有些不同。我需要能够同时指定“从偏移量”和“到偏移量”。

kt06eoxx

kt06eoxx1#

无法将结束偏移量设置为初始参数(就像可以设置开始偏移量一样),但可以使用 createDirectStream (清单中的第四个重载版本),它使您能够使用 HasOffsetRanges (这给了你回报 OffsetRange ).
这意味着您必须比较从 OffsetRange 在每一个小批量中都有你的结束偏移量,以便知道你在哪里,什么时候停止Kafka的消费。
我想您还需要考虑一个事实,即每个分区都有其顺序偏移量。我想如果你能稍微超过2gb,完成当前的微批处理(可能是几kb,这取决于你的消息密度)所需的数据量,这将是最简单的,以避免将最后一批处理拆分为已消耗和未消耗的部分,这可能需要你摆弄spark保持的偏移量,以便跟踪消耗了什么和没有消耗什么。
希望这有帮助。

相关问题