代码之家  ›  专栏  ›  技术社区  ›  igx

Flink理解后期事件与水印

  •  0
  • igx  · 技术社区  · 4 年前

    看着 this article 它说关于 水印

    我们现在将水印设置为当前时间-5秒,这告诉Flink期待消息 最长为5秒-这是因为每个窗口只有在水印通过时才会被评估 enter image description here

    在那篇文章的后面,它解释了在设置时 允许迟到 :

    Flink不会丢弃消息,除非它超过了window_end_time+允许的延迟

    实际上导致窗口评估延迟,因为 允许迟到 设置好了吗?

    那么,在用法上有什么不同呢 水印 允许迟到 ? 何时使用哪个?

    0 回复  |  直到 4 年前
        1
  •  4
  •   David Anderson    4 年前

    这个 水印延迟 设置Flink在触发窗口之前等待无序事件的时间下限 第一次 .

    这个 允许迟到 确定Flink将在窗口状态下保持多长时间。在窗口状态仍然可用时到达的任何延迟事件都将 再次触发窗口 ,使其产生更新的结果。

    一旦允许的延迟过期,窗口的状态就会被清除,任何极晚的事件都会被丢弃或发送到侧输出。

    enter image description here

    如果窗口输出的下游消费者可以像这样处理接收窗口结果的更新(例如,窗口连接到实时仪表板),那么设置相对较短的水印延迟并自由使用允许的延迟可能是有意义的。另一方面,如果在初始结果之后无法利用任何东西,则需要使水印延迟足够大以满足您对准确性/完整性的要求,并将允许的延迟设置为零。