首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kafka流是如何分配分区的?

Kafka流是如何分配分区的?
EN

Stack Overflow用户
提问于 2018-04-27 21:52:23
回答 1查看 2.3K关注 0票数 5

我有一个卡夫卡流应用程序,它接收来自主题-1作为KStream和主题-2作为KTable的数据。这两个主题都有4个分区。假设我有4个应用程序实例正在运行,那么每个实例将从主题-1的单个分区接收数据。主题-2作为KTable接收如何?在这种情况下,所有实例都将从所有4个分区接收数据吗?如果这两个主题都是相同的,那么我猜Kafka流将确保为应用程序分配相同的分区。如果Top-2没有任何键,而是应用程序将从值本身推断出这一点,那么这意味着所有实例都需要从Top-2获取所有分区。卡夫卡流是如何处理这种情况的?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-05 17:03:09

根据输入分区对KTables进行切分。因此,与KStream类似,每个实例都将得到一个主题分区,并将这个主题分区具体化为KTable的碎片。Kafka流确保不同主题的主题分区位于同一位置,即一个实例将得到分配的topic-1 partition-0topic-2 partition-0 (等等)。

如果topic-2没有密钥集,数据将随机分布在主题中。对于这种情况,您可以使用GlobalKTable代替。GlobalKTable是每个实例的所有分区的完整复制。如果您做了一个KStream-GlobalKTable- join,您可以指定一个"mapper“,它从表中提取join属性(也就是说,您可以从值中提取join属性)。

注意: KStream-GlobalKTable连接的语义与KStream-KTable联接不同。与后者相比,它不是时间同步的,因此,从GlobalKTable更新的设计来看,连接是不确定的;也就是说,不能保证KStream记录将首先“查看”GlobalKTable更新,从而加入更新的GlobalKTable记录。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50070749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档