[英]Does Kafka Streams GlobalKTable topic require the same number of partitions as KStream topic which it will be joining with?
我们想在 Kafka 流应用程序中使用 GlobalKTable。 输入主题(KTable/KStream)有 N 个分区,并且 GlobalKTable 将用作 stream 应用程序中的字典。
GlobalKTable 的输入主题是否必须与其他输入主题(KTable/KStream 的来源)具有相同数量的分区?
据我了解,答案是否定的(不受限制,主题也可能有 M 个分区,其中 N > M),因为 GlobalKTable 在 stream 应用程序的每个实例中都已完全加载,并且在 KStream 加入期间不需要共同分区手术。 但我需要专家的确认!
谢谢!
更精确地:
为什么需要数据共同分区? 因为 KStream-KStream、KTable-KTable 和 KStream-KTable 连接是基于记录的键执行的(例如,leftRecord.key == rightRecord.key),所以要求连接的输入流/表是共同的键分区。
唯一的例外是 KStream-GlobalKTable 连接。 在这里,不需要共同分区,因为 GlobalKTable 的底层变更日志 stream 的所有分区都可用于每个 KafkaStreams 实例,即每个实例都有变更日志 stream 的完整副本。 此外,KeyValueMapper 允许从 KStream 到 GlobalKTable 的非基于键的连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.