join - 将 KStream 加入 KTable 时,Kafka KTables 缺少数据
问题描述
有没有人对这个问题发表过回应?还有其他帖子没有答案。我们的情况是,我们正在将消息推送到支持 KTable 的主题上,该主题是流处理的第一步。然后,我们从这些消息中提取少量数据并传递它们。我们正在对少量数据进行多次计算,以进行分组和聚合。在流式处理结束时,我们只想通过 KTable 重新加入到原始主题,以再次获取完整的消息内容。连接的结果只是数据的一个子集,因为它在 KTable 中找不到条目。
这只是问题的开始。在另一种情况下,我们使用 KTables 作为查找的索引,旨在丰富传入的数据。将这些查找视为识别我们之前是否在流消息中看到过特定模式。如果我们看到了模式,我们希望使用从现有 KTable 中提取的 ID(用于分组)对其进行标记。如果我们之前没有看到该模式,我们将为其分配一个 ID 并将其放回 KTable 中以用于标记未来的消息。我们发现,无法保证这些信息将出现在 KTable 中以供将来的消息使用。这种缺乏保证似乎让 KTables 毫无用处。我们无法弄清楚为什么论坛上对此的讨论很少。
最后,当使用流应用程序的单个实例运行时,这些似乎都不是问题。然而,一旦我们的数据变大并且我们被迫拥有 10 个应用程序实例,一切都崩溃了。同样,我们无法使用 GlobalKTables 之类的东西,因为要加载到单个机器的内存中的数据太多。
我们能做什么?我们目前计划完全放弃 KTables,并使用 Hazelcast 之类的东西来存储查找数据。我们是否应该转移到 Hazelcast Jet 并一起放弃 Kafka 流?
添加流: Kafka数据流
解决方案
对于这个没有答案的答案,我很抱歉,但我没有足够的积分来评论......
您描述的行为绝对与我对流的理解和经验不一致。如果您可以共享导致问题的拓扑(或简化的拓扑),那么我们可能会指出一个简单的错误。
一旦我们获得更多信息,我可以将其编辑为“真实”答案......
谢谢!-约翰
推荐阅读
- r - 在 write.csv 函数中指定路径
- vb.net - 如何在 VB.net 窗口窗体中更改变量的保护级别
- hyperledger - 未在 Hyperledger Composer 中正确声明
- php - PHP 将图像上传到 Laravel 控制器,该控制器将其读取为字符串?
- python - 平分搜索以选择最佳储蓄率
- java - Java 日期作为 MyBatis 中 Oracle SELECT 查询的参数
- c# - .NET Core - 在模型中获取 DbContext
- pdf - 使用命令通过 vim 使用 pandoc 将 Markdwn 编译为 PDF
- c++ - std::function 需要地址才能在 vs2012 上运行?
- autotools - AC_PATH_PROG 总是返回 /usr/bin/prog 而不是 /my/own/path/prog