Kafka重新分区(基于密钥的分组)

5lwkijsr  于 2021-06-05  发布在  Kafka
关注(0)|答案(1)|浏览(467)

当我们在基于某个键的流上应用groupby函数时,kafka是如何计算的,因为同一个键可能存在于不同的分区中?我看到了through()函数,它基本上对数据进行了重新分区,但我不明白它是什么意思。它会将具有相同密钥的所有消息移动到一个分区中吗?我们调用through()方法的频率是多少?如果有要求,我们能在收到每条信息后再打电话吗?请建议。谢谢

3bygqnnd

3bygqnnd1#

kafka中的数据(默认情况下)总是按键进行分区。如果你打电话 groupBy() 分组属性被设置为消息键,因此,当数据写入重分区主题时,具有相同键的所有记录都被写入同一分区。因此,当数据被读回时,可以在 aggregate() 功能。
请注意,kafka streams会自动执行此重新分区(包括创建所需主题)。打电话 repartition() (或 through() )会达到同样的效果,但这不是必须的。
还要注意,kafka streams程序是一个数据流程序。当使用dsl时,您只指定数据流程序本身,但还没有处理任何内容。只有你打电话的时候 KafkaStreams#start() 将执行数据流程序。

相关问题