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

Kafka:1对多加入

傅振濂
2023-03-14

基本上,我想知道如果我有topic1和topic2会发生什么,因为topic1可以有N个topic2元素。

Topic1是用户的事件,topic2是该用户的配置。作为第一步,我将通过key匹配它们,从topic2中过滤掉不属于该用户的配置,但我仍然有多个匹配项。我需要向topic2添加更多过滤器来找到精确的匹配项,但我不知道在按key连接之后是否可以这样做。

我读到这个:Kafka Stream和KTable一对多关系加入

但我仍然想知道,一旦过滤并进行了连接,我该如何处理这些数据?如果我最终得到一个包含多个条目的 ktable(N 个值有 1 个重复键)。如何在我的流/拓扑中处理它?

此外,我是否需要一个globalKTable,因为右侧的主题(配置)可能在不同的分区中?

谢谢,

共有1个答案

乜璞瑜
2023-03-14

Topic1是用户的事件,topic2是该用户的配置。作为第一步,我将通过key匹配它们,从topic2中过滤掉不属于该用户的配置,但我仍然有多个匹配项。我需要向topic2添加更多html" target="_blank">过滤器来找到精确的匹配项,但我不知道在按key连接之后是否可以这样做。

您不需要执行所有这些筛选。您需要查看 KStreams API 中的连接语义,并确定哪种方法适用于您的应用程序。

读一读:跨越溪流–加入Apache Kafka

从你的问题中我可以看出,看起来KStream-GlobalKTable Join会做你正在寻找的事情——假设用户配置是全局状态。在KStream-global table连接的API中支持内部和左侧连接。

如果我最终得到一个有多个条目的ktable(N个值有一个重复的键)。我如何在我的流/拓扑中处理它?

连接操作的输出本身是KTable (changelog流)或事件流(在kstream-kstream连接情况下可能是窗口)。但是最终您会像处理任何其他操作一样,在您的拓扑中处理输出流。

 类似资料:
  • orderer-1-kafka-1 启动一个 3 个节点的服务,包括 zookeeper、fabric-order 和 kafka。

  • 问题内容: 我有三个表:应用程序,权限和applications_permissions 对于应用程序,有两类:免费和商业类(价格=‘0’和价格!=‘0’) 现在,我想为每个许可都知道有多少百分比的应用程序引用了它。而这两个类别 自由: 商业的: 我已经计算出以下查询,但其中不包含没有应用程序的权限ID:/ 我该怎么做呢?我已经尝试了几个小时了(该查询,其他联接),但这使我难以捉摸:/ 问题答案:

  • 我使用的是1.5.4 spring boot,Java8和kafka 2.2.0版本。我有5个代理和4个不同的主题,每个50个分区。 我有一个这样的系统: 因为使用相同的键,我所有内部主题的消息都在同一个分区,对吗?并且只有1个线程可以从该分区使用 如果我分发到50个分区,我会像50个分区那样做批处理工作,并分发到50个分区,我的代码性能是否会像x2x3x4倍那样增加?我能知道点什么吗

  • 最好的办法还是写一个真实的项目,从博客项目开始。 了解关系(1对1,1对多)在mongoose里如何实现 UserSchema = new Schema({ ... contacts:[] }); 了解关系(1对1,1对多,多对多)在mongoose里如何实现 ContactSchema = new Schema({ ... owner: { type

  • Rails文档很好地解释了如何处理只需要has_many-belongs_to关系的自连接。在本例中,一个雇员(作为经理)可以有许多雇员(每个雇员都是下属)。 但是,如何处理has_many has_many自加入(我听说这被称为双向循环关联)? 例如,您如何处理员工可以有许多下属作为经理的情况,也可以有许多经理作为下属的情况? 或者,换句话说,一个用户在哪里可以关注很多用户,被很多用户关注?

  • 主要内容:1. 如何理解高性能设计,2. Kafka 高性能设计的全景图,3. 生产消息的性能优化手段,4.Kafka源码分析Kafka 的高性能设计可以说是全方位的,从 Prodcuer 、到 Broker、再到 Consumer, 1. 如何理解高性能设计 对于线程池、多级缓存、IO 多路复用、零拷贝等技术是一个系统性的问题,至少需要深入到操作系统层面。从 CPU 和存储入手,去了解底层的实现机制,然后再自底往上,一层一层去解密和贯穿起来。 高性能设计离不开的就是计算和IO 计算: 1、让更