我想知道为什么在kafka中对两个kstream进行联合分区需要对两个流使用相同数量的分区,正如下面url:enterlinkdescription中的文档所给出的那样
eqqqjvef1#
正如名称“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等。
1条答案
按热度按时间eqqqjvef1#
正如名称“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等。