我有一个场景,我们有两个不同的流,我们在两个不同的时间获取它们的数据,我需要根据值中存在的时间戳将它们加入。我将尝试通过下面的示例进行解释。
inputStream1->
inputStream2->
输出我需要的Join->
注意:两个流都在不同的时间获得输入。当inputStream1的第一条记录到达时,inputStream2可能存在所有5条记录。我想在值中的时间窗口上对它们进行匹配。
我如何在kafka中实现这一目标。甚至有可能吗?
答案 0 :(得分:0)
仅靠卡夫卡就很难甚至几乎不可能。从理论上讲,您可以有一个单例服务器,它可以从两个队列中读取数据,并通过从每个队列中读取足够的数据来进行关联,从而使其内存中的记录彼此匹配。
如果您只想在给定的时间范围内关联数据,某些Kafka客户端库将在一个时间范围内读取消息,因此您可以使用它。但是,从您的数据示例来看,除非您的时间戳只是消息到达的时间,否则情况可能会或可能不会。
但是,除非两个队列以相同的方式进行分区,否则一旦您需要扩展到第二个实例,所有这些都将崩溃。
或者,您写入中间数据存储区以存储队列中的数据并针对该数据进行查找。