当 kafka 流中发生重新分区时,究竟会发生什么?

mco*_*ner 5 apache-kafka apache-kafka-streams

假设我有一个员工流,以 为键empId,其中还包括departmentId. 我想按部门汇总。所以我做了一个selectKey(映射器来获取 DepartmentId),然后groupByKey()(或者我可以只做 aa groupBy(...),我假设),然后说,count()。究竟会发生什么?我认为它进行了“重新分区”。我认为发生的事情是它写入一个“内部”主题,我只是一个带有派生名称的常规主题,自动创建。也就是说,由流的所有实例共享,而不仅仅是一个(即非本地)。所以聚合是跨所有新键的,而不仅仅是来自源流实例的那些消息(我认为)。那是对的吗?

我还没有找到关于重新分区的全面描述。任何人都可以给我指出一篇关于这方面的好文章吗?

Mat*_*Sax 9

你所描述的正是正在发生的事情。

through()重新分区步骤与(自动插入到处理拓扑中)相同,是to("topic")plus的快捷方式builder.stream("topic")

这篇博文中也对此进行了说明和解释:https://www.confluence.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/