当卡夫卡流中发生重新分区时,到底发生了什么?

时间:2019-03-07 20:27:19

标签: apache-kafka apache-kafka-streams

说我有一组由empId键的员工,其中也包括departmentId。 我想按部门汇总。因此,我执行了selectKey( 映射程序以获取departmentId ),然后是groupByKey()(或者我可以做groupBy(...),我想),然后然后说count()。到底发生了什么?我认为它执行“分区”。我认为发生的事情是它写入一个“内部”主题,该主题只是一个自动创建的带有衍生名称的常规主题。即,由流的所有实例共享,而不仅仅是一个(即非本地)共享。因此,聚合遍及所有新密钥,而不仅仅是来自源流实例的消息(我认为)。正确吗?

我没有找到有关重新分区的全面描述。有人可以指出我对此的好文章吗?

1 个答案:

答案 0 :(得分:2)

您描述的正是正在发生的事情。

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

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