Flink 混淆事件时间 Windows 与第一项时间戳的关系
Flink Confusion About Event Time Windows in Relation to First Item's Timestamp
我有一个包含数据和时间戳的记录日志,我的 Flink 应用程序按时间戳升序接收记录。在某个键的第一个项目到达 window 后,我想在 X 事件时间后关闭 window 并检查是否有足够的项目到达某个条件,并为该键发出通过或失败.
用 Flink 的 window 基本功能是不可能的吗?例如,如果我希望 windows 的长度为 30 秒,但键的第一个项目在 15 秒后到达,最后一个在 40 秒后到达,那么 window 似乎将在 30 秒后关闭并且该键的记录轨迹将被分成两个 windows。在这种情况下,我想要的是 window 在事件时间的 15 秒开始并在 45 秒结束。
根据我的经验,这些用例在 KeyedProcessFunction
中比在自定义 window 中更容易实现(built-in windows 不满足您的要求):
- 在
processElement
中,您可以将元素缓冲到托管状态,并在未来的某个时间(30 秒)注册一个计时器
- 在
onTimer
中,您检查是否有足够的元素到达,评估您的条件并向下游发出。
我有一个包含数据和时间戳的记录日志,我的 Flink 应用程序按时间戳升序接收记录。在某个键的第一个项目到达 window 后,我想在 X 事件时间后关闭 window 并检查是否有足够的项目到达某个条件,并为该键发出通过或失败.
用 Flink 的 window 基本功能是不可能的吗?例如,如果我希望 windows 的长度为 30 秒,但键的第一个项目在 15 秒后到达,最后一个在 40 秒后到达,那么 window 似乎将在 30 秒后关闭并且该键的记录轨迹将被分成两个 windows。在这种情况下,我想要的是 window 在事件时间的 15 秒开始并在 45 秒结束。
根据我的经验,这些用例在 KeyedProcessFunction
中比在自定义 window 中更容易实现(built-in windows 不满足您的要求):
- 在
processElement
中,您可以将元素缓冲到托管状态,并在未来的某个时间(30 秒)注册一个计时器 - 在
onTimer
中,您检查是否有足够的元素到达,评估您的条件并向下游发出。