【问题标题】:Flink keyed windows watermarkFlink 键控窗口水印
【发布时间】:2020-04-29 07:48:31
【问题描述】:

我正在使用带有事件时间键控窗口的 flink。 似乎某些窗口没有被发射。
是否为每个键单独推进水印?
例如,如果我的 key 是 (id,type),并且特定的一对 id 和 type 没有被摄取到源,那么它们的特定窗口水印不会前进吗? 如果是这种情况,我如何确保我所有的键控窗口在一段时间后都会被驱逐? (我们有很多键,因此不能为每个键定期发送虚拟消息)。

我会很感激任何帮助

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    Flink 为每个任务(即每个并行实例)都有单独的水印——否则将不得不进行某种极其昂贵的全局协调——但不是每个键。在键控窗口的情况下,窗口运算符的每个实例都将处理键空间的某个不相交子集的事件,并且这些键的所有窗口都将使用相同的水印。

    请记住,空窗口不会产生结果。因此,如果某个键在某个窗口期间没有事件发生,则该窗口不会为该键生成结果。

    或者可能是您有一个空闲的来源阻止了水印。如果您的源任务之一变得空闲,则其水印将不会前进。您可以在 Web UI 中检查当前水印,并检查它是否在每个任务中都在推进。

    【讨论】:

    • 谢谢大卫,什么是并行实例?键 (id=1, type=string) 的窗口与 (id=2, type=bool) 键的窗口是不同的并行实例?如果是这样,我如何查看 ui 以查看每个键的水印?用户界面位于任务级别。我错过了什么?
    • 抱歉不准确。我所说的“并行实例”是指与任务完全相同的东西。
    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多