为什么在kafka中两个Kstream的共分区要求两个流的分区数相同?

Aka*_*ain 3 apache-kafka apache-kafka-streams

我想知道为什么在kafka中对两个Kstream进行共分区,为什么两个流都需要相同数量的分区,如下面URL中的文档所示: 在此处输入链接描述

Mat*_*Sax 6

如名称“ co-partition”所示,您要将来自不同主题但具有相同密钥的数据放入同一Kafka Streams应用程序实例。如果您没有相同数量的分区,则无法获得此行为。

假设您的主题A具有2个分区,主题B具有3个分区。因此,可能发生的情况是,具有键X的一条记录被哈希到分区A-0和B-1(即,不同的分区号)。但是,对于其他密钥Y,可能会将其哈希到A-0,但会哈希到B-2。

仅当两个主题的分区数相同时,具有相同键的记录才最终位于相同的分区(当然是不同主题)中,这允许处理A-0 / B-0和A-1 / B- 1等在一起。