当数据在不同时间到达时,连接来自两个不同流的数据

hiz5n14c  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(349)

我有一个场景,我们有两个不同的流,我们在两个不同的时间获得它们的数据,我需要根据值中的时间戳来连接它们。我将试着通过下面的例子来解释。
输入流1->
键111,值21:00 aaa
键111,值21:02 aaa
键111,值21:04 aaa
键111,值21:15 aaa
键111,值21:18 bbb
键111,值21:20 bbb
输入流2->
键111,值21:01 10.0.0.1
键111,值21:04 10.0.0.2
键111,值21:14 10.0.0.3
键111,值21:20 10.0.0.4
键111,值21:21 10.0.0.5
我需要的输出连接->
aaa 10.0.0.1级
aaa 10.0.0.2级
aaa 10.0.0.3级
bbb 10.0.0.4级
bbb 10.0.0.5级
注意:两个流在不同的时间获得它们的输入。当inputstream1的第一条记录到达时,inputstream2可能存在所有5条记录。我想在值中的时间窗口上匹配它们。
我怎样才能在Kafka做到这一点。有可能吗?
单击以查看图像

4ktjp1zp

4ktjp1zp1#

只有Kafka是很难做到几乎不可能的。理论上,您可以有一个单例服务器,它从两个队列中读取数据,并通过从每个队列中读取足够的数据来进行关联,从而使内存中的记录相互匹配。
如果您只希望在给定的时间窗口内关联数据,那么一些kafka客户机库将在某个时间窗口内读取消息,这样您就可以使用它。但是,从您的数据示例来看,情况可能是这样,也可能不是这样,除非您的时间戳仅仅是消息到达时的时间戳。
但是,当您需要扩展到第二个示例时,这一切都会崩溃,除非两个队列以相同的方式进行分区。
或者,写入中间数据存储区以存储队列中的数据,并对该数据进行查找。

相关问题