当前位置: 首页 > 知识库问答 >
问题:

KTable与GlobalKTable和leftJoin()与outerJoin()之间有什么区别?

萧玮
2023-03-14

我阅读了kstream.leftjoin,但没有找到确切的区别。

共有1个答案

盖锐
2023-03-14

KTable在所有正在运行的Kafka Streams实例之间划分数据,而GlobalkTable则拥有每个实例上所有数据的完整副本。globalktable的缺点是它显然需要更多的内存。这样做的好处是,您可以使用来自流的非键属性进行KStream-GlobalKTable连接。对于KStream-KTable联接和联接的非键流属性,只有在进行联接之前提取联接属性并将其设置为键--这将导致在计算联接之前对流进行重新分区。

但是请注意,还有一个语义上的区别:对于流表联接,Kafka流对齐了基于记录时间戳排序的记录处理。因此,对表的更新与流的记录对齐。对于globalktable,没有时间同步,因此更新为globalktable,并且与流记录的处理完全分离(因此,语义较弱)。

有关更多详细信息,请参见KIP-99:将全局表添加到Kafka流。

关于左联接和外联接:这就像在数据库中分别是左外联接和全外联接。

对于左侧外部联接,如果左侧的联接不匹配,您可能会“丢失”右侧输入流的数据。

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

 类似资料:
  • 问题内容: 和处理特殊字符之间有什么区别? 被空间接受。 在的情况下,被接受为。 问题答案: 是要从URI(Spring称为URI模板)中获取一些占位符 也是要从URI中获取参数—请参见Spring Reference第16.3.3.3章,使用@RequestParam将请求参数绑定到方法参数 如果该网址在2013年12月5日获得了用户1234的发票,则控制器方法如下所示: 同样,请求参数可以是可

  • 问题内容: 和之间有什么区别? 它们都充当未来结果的占位符,但是主要区别在哪里? 问题答案: 根据讨论,终于被要求包含在Java 8中,其javadoc解释了: 可以明确完成(设置其值和状态)并可以用作CompletionStage的Future,它支持在完成时触发的相关功能和操作。 列表上还提供了一个示例: 请注意,最终的API稍有不同,但允许类似的异步执行:

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: 在我的脑海中,我一直都知道在任何项目中都使用内联样式的类。但是两者之间有什么有效的区别吗? 问题答案: 有一个简单的原因。CSS的重点是将内容(HTML)与表示(CSS)分开。一切都与可访问性和代码重用有关。

  • 问题内容: 我不确定我是否完全理解其中的区别。WebDriver API还直接控制选择的浏览器。什么时候应该使用selenium遥控器(selenium RC)? 现在,我目前的情况是通过编写带有Selenium WebDriver API的套件并使其在我的计算机上运行来测试Web应用程序。测试花费的时间越来越长,因此我一直在寻找在Linux服务器上运行测试的方法。 如果我使用Selenium R