说我有一组由empId
键的员工,其中也包括departmentId
。
我想按部门汇总。因此,我执行了selectKey(
映射程序以获取departmentId )
,然后是groupByKey()
(或者我可以做groupBy(...)
,我想),然后然后说count()。到底发生了什么?我认为它执行“分区”。我认为发生的事情是它写入一个“内部”主题,该主题只是一个自动创建的带有衍生名称的常规主题。即,由流的所有实例共享,而不仅仅是一个(即非本地)共享。因此,聚合遍及所有新密钥,而不仅仅是来自源流实例的消息(我认为)。正确吗?
我没有找到有关重新分区的全面描述。有人可以指出我对此的好文章吗?
答案 0 :(得分:2)
您描述的正是正在发生的事情。
重新分区步骤与through()
(自动插入到处理拓扑中)相同,这是to("topic")
加builder.stream("topic")
的快捷方式。
此博客文章中也对此进行了说明和解释:https://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/