gpt4 book ai didi

apache-kafka-streams - 使用 1 个分区时何时使用 GlobalKTable 而不是 KTable

转载 作者:行者123 更新时间:2023-12-04 00:29:07 24 4
gpt4 key购买 nike

我了解两者之间的区别,但似乎我仍然使用 KTable作为“默认”,不知道何时更喜欢 GlobalKTable .

请分享您的经验,什么时候有GlobalKTable是必须的,为什么不使用它等等。

最佳答案

关键是KTable是分区的,这意味着如果您有一个包含 N 个分区的基础主题,则负责这些分区子集的实例将有权访问这些分区上的数据,但不能访问此实例未管理的分区上的数据.

然而,GlobalKTable将使用所有实例中的所有主题数据。例如,您希望将其用于与一组外部数据的连接,这些数据的分区与传入数据没有直接关联(或无法预测其关系)。

例如。假设您有来自 users 的流主题,使用默认循环分区,具有 country领域,你需要丰富这个 users使用来自用户所在国家/地区的数据进行流式传输。然后,您可以使用 GlobalKTable与国家的数据,并加入例如users流与一个 country GlobalKTable在国家。

由于 GlobalKTable 允许您访问所有潜在的可连接数据,因此对于较小的数据,它比 KTable 更有效,因为您不需要为该连接重新分区数据(所有数据都在那里)。但是您应该注意大小:您必须处理每个分区中的所有数据集。这就是为什么它通常用于有限大小的数据集合,也不是超大的。

如果您在 KStream 之间执行连接和一个 KTable ,它需要重新分区数据(创建一个内部主题),根据加入键重新分组数据。

同样,如果您使用处理器 API,如果您查询 KTable从一个实例中,您将拥有该实例生成的数据,而不是其他实例。

更新 :另见@matthias-j-sax 关于同步的评论。

关于apache-kafka-streams - 使用 1 个分区时何时使用 GlobalKTable 而不是 KTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53819754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com