apache-kafka-streams - 合并两个时间窗口的最佳模式是什么
问题描述
我有一个 TimeWindowed KTable
stream.table("topicA")
.groupByKey()
.windowedBy(TimeWindows.of(TimeUnit.HOURS.toMillis(1L))
.until(TimeUnit.DAYS.toMillis(1L)))
.reduce((value1, value2) -> value2,
Materialized.as("A-Store"))
现在我在 TopicA 中放置了 4 个事件,
key1 Event1 currentTime -90 min
key2 Event2 currentTime -45 min
key1 Event3 currentTime -30 min
key3 Event4 currentTime -15 min
如果我使用以下命令从 KTable 获取事件,则不会
fetchAll(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(2),
System.currentTimeMillis())
正如预期的那样,我收到了来自商店的 4 个事件,包括两个 key1 事件传递不同的时间窗口......
现在 KTable 正常运行模式总是为 key 传递最新事件,我应该如何处理这种情况?当然我可以创建一个地图并在那里插入事件然后回忆,但这似乎很笨拙。
有没有更好的方式来处理这个问题,从 2 个不同的时间窗口收集数据并将它们合并?
解决方案
推荐阅读
- ios - Firebase google 登录身份验证 AppDelegate-使用未解析的标识符“isMFAEnabled”
- php - 如何在 PHP (Laravel) 中验证请求的源域
- java - 如何迭代以找到最小值
- gitlab - 是否可以在 .gitlab-ci.yml 的多行命令中使用此处的文档?
- json - 从 url 导入 Json 数据并保存到数据库 laravel
- javascript - 如何在 google app 脚本中获取我的 google sheet 的 json 格式?
- html - 反应规模错误
- assembly - 简单回路(读取温度 - MC68HC)
- python - Nginx 启动失败
- python - 创建一个遍历嵌套列表并返回字典的函数:列表中的空元素在字典中返回无