apache-flink - Apache Flink - 如何在启动时跳过除最近窗口之外的所有窗口
问题描述
在 Flink 中,我有一个带有键控事件流的作业(例如:每个键平均每天有 10 个事件)。它们根据事件时间作为滑动窗口处理(例如:90 天窗口大小和 1 天窗口幻灯片)。事件从 Kafka 消费,它保留所有事件历史(例如:过去 3 年)。
有时我想重新启动 Flink:进行维护、错误处理等。或者使用已经包含事件历史的 Kafka 启动一个新的 Flink 实例。
在这种情况下,我想跳过每个键的最新窗口之外的所有触发。(它特定于我的用例:每个窗口在处理时会有效地覆盖以前窗口的处理结果。所以在启动时,我只想为每个键处理一个最近的窗口。)
在 Flink 中可以吗?如果是这样,那该怎么做?
解决方案
您可以使用
FlinkKafkaConsumer<T> myConsumer = new FlinkKafkaConsumer<>(...);
myConsumer.setStartFromTimestamp(...); // start from specified epoch timestamp (milliseconds)
这与Kafka Consumers Start Position Configuration文档部分中的其他相关功能一起进行了描述。
或者您可以使用保存点进行干净的升级/重新部署,而不会丢失您的 kafka 偏移量和相关的窗口内容。
推荐阅读
- uitextfield - 将多个 UITextField 附加到一个 iBOutlet
- r - 使用多个条件重命名 r 中的列
- android - 刷新消息队列以防止基于消息的泄漏。但是要刷新哪个 HandlerThread?
- gatsby - 如何通过 GitHub 升级部署在 Netlify 上的 Gatsby 入门博客?
- python - 如何使用 argmax 将索引返回到无法重新整形为矩阵的多维 ndarray?
- python - 如何按嵌套列表的第一个元素对嵌套列表进行分组?
- javascript - 如何在不使用 Js id 选择器的情况下动态获取 Angular 中的 *ngFor 中的元素
- python - Flask-SQLAlchemy 不保存数据库更新
- python - 如何在屏幕上添加隐形按钮?
- api - 如何使用 cURL 从 Trello 卡片中删除附件?