繁体   English   中英

Kafka Streams GlobalKTable 主题是否需要与它将加入的 KStream 主题相同数量的分区?

[英]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 和 GlobalTable(连接)的主题分区数可能不同。

来自 Kafka Streams 开发者指南

在高层次上,KStream-GlobalKTable 连接与 KStream-KTable 连接非常相似。 但是,与分区表相比,全局表以一定的代价为您提供了更大的灵活性:

  • 它们不需要数据共同分区。

更多详情可在这找到:

全局表连接

加入共分区要求

更精确地:

为什么需要数据共同分区? 因为 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM