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

时间:2017-08-07 10:54:03

标签: apache-kafka apache-kafka-streams

我想知道为什么kafka中两个Kstream的共同分区需要两个流的分区数相同,如下面的URL中的文档中所示: enter link description here

1 个答案:

答案 0 :(得分:4)

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

假设您有包含2个分区的主题A和包含3个分区的主题B.因此,可能发生具有密钥X的一个记录被散列到分区A-0和B-1(即,不是相同的分区号)。但是,对于不同的键Y,它可能被散列到A-0但是B-2。

只有当两个主题的分区数相同时,具有相同键的记录才会在相同的分区(当然是不同的主题)中结束,这样就可以处理A-0 / B-0和A-1 / B-1等。