当我们在基于某个键的流上应用groupby函数时,kafka是如何计算的,因为同一个键可能存在于不同的分区中?我看到了through()函数,它基本上对数据进行了重新分区,但我不明白它是什么意思。它会将具有相同密钥的所有消息移动到一个分区中吗?我们调用through()方法的频率是多少?如果有要求,我们能在收到每条信息后再打电话吗?请建议。谢谢
3bygqnnd1#
kafka中的数据(默认情况下)总是按键进行分区。如果你打电话 groupBy() 分组属性被设置为消息键,因此,当数据写入重分区主题时,具有相同键的所有记录都被写入同一分区。因此,当数据被读回时,可以在 aggregate() 功能。请注意,kafka streams会自动执行此重新分区(包括创建所需主题)。打电话 repartition() (或 through() )会达到同样的效果,但这不是必须的。还要注意,kafka streams程序是一个数据流程序。当使用dsl时,您只指定数据流程序本身,但还没有处理任何内容。只有你打电话的时候 KafkaStreams#start() 将执行数据流程序。
groupBy()
aggregate()
repartition()
through()
KafkaStreams#start()
1条答案
按热度按时间3bygqnnd1#
kafka中的数据(默认情况下)总是按键进行分区。如果你打电话
groupBy()
分组属性被设置为消息键,因此,当数据写入重分区主题时,具有相同键的所有记录都被写入同一分区。因此,当数据被读回时,可以在aggregate()
功能。请注意,kafka streams会自动执行此重新分区(包括创建所需主题)。打电话
repartition()
(或through()
)会达到同样的效果,但这不是必须的。还要注意,kafka streams程序是一个数据流程序。当使用dsl时,您只指定数据流程序本身,但还没有处理任何内容。只有你打电话的时候
KafkaStreams#start()
将执行数据流程序。