Flink 对事件时间窗口与第一个项目的时间戳的混淆



我有一个包含数据和时间戳的记录日志,我的 Flink 应用程序按时间戳升序接收这些记录。在某个键的第一个项目到达窗口后,我想在 X 事件时间后关闭窗口,并检查是否有足够的项目到达某个条件,并为该键发出通过或失败。

使用 Flink 中的基本窗口函数这是不可能的吗?例如,如果我希望我的窗口长度为 30 秒,但键中的第一个项目在 15 秒到达,最后一个项目在 40 秒到达,则窗口似乎将在 30 时关闭,并且该键的记录轨迹将拆分为两个窗口。在这种情况下,我想要的是窗口在事件时间的 15 秒开始,在 45 秒关闭。

根据我的经验,这些用例在KeyedProcessFunction中实现比使用自定义窗口要容易得多(内置窗口不适用于您的要求(:

  • processElement中,您可以将元素缓冲到托管状态,并在将来的某个时间(30 秒(注册计时器
  • onTimer中,您可以检查是否有足够的元素到达,评估您的状况并排放到下游。

相关内容

  • 没有找到相关文章

最新更新