apache-flink - Apache Flink - 基于事件时间计算最后一个窗口
问题描述
我的工作做以下事情:
- 根据事件时间使用来自 Kafka 主题的事件。
- 计算 7 天的窗口大小和 1 天的幻灯片。
- 将结果发送到 Redis。
我有几个问题:
- 如果它使用最新记录中的 Kafka 事件,则作业在 1 天后处于活动状态,作业将关闭窗口并计算 7 天窗口。问题是该作业只有 1 天的数据,因此结果是错误的。
- 如果我试图让它从 7 天前的时间戳中消耗 Kafka 事件,那么随着工作的开始,它会从第一天开始计算整个窗口,并且花费了很多时间。另外,我只想要最后一个窗口结果,因为这对我来说很重要。
我错过了什么吗?有没有更好的方法来做到这一点?
解决方案
Flink 将时间窗口与 epoch 对齐。因此,如果您有一个一小时长的窗口,它们会从整点开始运行到整点。整天的窗口从午夜运行到午夜。同样的原则适用于 7 天长的窗口,并且由于纪元从星期四(1970 年 1 月 1 日)开始,7 天长的窗口应该在周三晚上/周四早上的午夜关闭。
如果您想将窗口移动到不同的时间开始,您可以为窗口构造函数提供偏移量。
推荐阅读
- twilio - twilio REST API:严格的后端?
- python - pylint 为可调用的对象属性给出不可调用错误
- web-crawler - 如何限制重复的类似网址抓取
- amazon-web-services - AWS - 您如何在 lambda 进程之间共享访问令牌?
- r - node.js 已安装但仍然在 RInno 中收到投诉
- r - R:拆表以减少维度
- ios - 是否有可能在用户松开手指之前放弃对 UISwitch 元素的控制?
- authentication - 在 Kerberos 数据库中找不到服务器 -ERR_S_PRINCIPLE_UNKNOWN(7)
- java - 自动化:将文件从源文件夹一个一个移动到目标文件夹并从源文件夹中删除文件
- c# - .NET Core 视图使用 Razor - 多个相同的路由