gpt4 book ai didi

apache-kafka-streams - KTable vs GlobalKTable 和 left Join() vs external Join() 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 02:43:13 24 4
gpt4 key购买 nike

在 Kafka Stream 库中,我想知道 KTable 和 GlobalKTable 之间的区别。

同样在 KStream 类中,还有两个方法 leftJoin()outerJoin() .这两种方法也有什么区别?

我读了 KStream.leftJoin ,但没有设法找到确切的区别。

最佳答案

KTable VS GlobalKTable

一个 KTable在所有正在运行的 Kafka Streams 实例之间分片数据,而 GlobalKTable拥有每个实例上所有数据的完整副本。 GlobalKTable的缺点是它显然需要更多的内存。优点是,您可以使用流中的非键属性进行 KStream-GlobalKTable 连接。对于 KStream-KTable 连接和用于连接的非关键流属性,只能通过在连接之前提取连接属性并将其设置为键来实现——这将导致在连接之前对流进行重新分区步骤被计算。

但请注意,还有一个语义差异:对于流表连接,Kafka Stream 对齐基于记录时间戳排序的记录处理。因此,对表的更新与您的流记录对齐。对于 GlobalKTable ,没有时间同步,因此更新到GlobalKTable并与流记录的处理完全分离(因此,您会获得较弱的语义)。

欲知更多详情,请参阅 KIP-99: Add Global Tables to Kafka Streams .

leftJoin() VS outerJoin()

关于左连接和外连接:就像在数据库中分别有左外连接和全外连接。

对于左外连接,如果左侧的连接没有匹配项,您可能会“丢失”右侧输入流的数据。

对于(完全)外部连接,不会丢弃任何数据,并且两个流的每个输入记录都将在结果流中。

关于apache-kafka-streams - KTable vs GlobalKTable 和 left Join() vs external Join() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45975755/

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