将KStream加入KTable时,Kafka KTables缺少数据

时间:2018-09-12 17:48:32

标签: join apache-kafka missing-data apache-kafka-streams

有人发表过对此问题的答复吗?还有其他帖子没有答案。我们的情况是,我们将消息推送到在流过程的第一步中支持KTable的主题上。然后,我们从这些消息中提取少量数据并将其传递。我们正在对较少的数据进行多次计算以进行分组和聚合。在流处理过程的最后,我们只想通过KTable重新加入该原始主题,以再次获取完整的消息内容。连接的结果只是数据的一个子集,因为它无法在KTable中找到条目。

这仅仅是问题的开始。在另一种情况下,我们将KTables用作查找索引,以丰富输入的数据。将这些查找视为确定我们之前是否已在流消息中看到特定模式。如果我们已经看到了模式,那么我们希望使用从现有KTable中提取的ID(用于分组)对其进行标记。如果在我们没有看到该模式之前,我们将为其分配一个ID并将其放回KTable中以用于标记将来的消息。我们发现,没有保证该信息将出现在KTable中以用于将来的消息。缺乏保证似乎使KTables无法使用。我们无法弄清楚为什么在论坛上对此讨论很少。

最后,当使用流应用程序的单个实例运行时,这似乎都不是问题。但是,一旦我们的数据变大并且我们被迫拥有10个该应用程序实例,一切就崩溃了。同样,我们也无法使用GlobalKTables之类的东西,因为有太多数据无法加载到单台计算机的内存中。

我们该怎么办?我们目前正计划一起放弃KTable,并使用类似Hazelcast的东西来存储查找数据。我们是否应该搬到Hazelcast Jet并一起放下Kafka流?

添加流程: Kafka data flow

1 个答案:

答案 0 :(得分:0)

对于这个非答案性的答案,我们感到很抱歉,但是我没有足够的观点要评论...

您描述的行为绝对与我对流的理解和经验不一致。如果您可以共享引起此问题的拓扑(或简化的拓扑),则我们可能会指出一个简单的错误。

一旦获得更多信息,我可以将其编辑为“真实”答案...

谢谢! -约翰