Flink:使用允许的延迟清除Windows元数据

时间:2019-08-19 11:40:17

标签: apache-flink flink-streaming

如何在允许的延迟时间结束之前“摆脱”窗口元数据(WindowOperator和InternalTimer)?

是否可以将元数据与窗口数据本身一起清除?

我们不介意丢失元数据-不需要根据先前的非最新数据的上下文来处理具有相同键和时间的后期事件。

某些背景-

[当前使用Flink-v1.6] 我们正在处理事件时间窗口,并处理具有唯一密钥的大量事件。 95%的事件不会迟到,只会触发一次。

我们的工作将允许延迟72小时。我们使用了“清除”功能,但是仍然允许的延迟机制导致我们要减少的巨大状态(保留所有这些Windows元数据)。

1 个答案:

答案 0 :(得分:1)

通常,如果您需要自定义状态管理,我建议使用ProcessFunction而不是Flink的窗口API,因为与使相关逻辑分布在窗口分配器,触发器,逐出器和过程窗口函数之间相比,它易于理解和维护。

在您的情况下,确实想到了一个主意:如果您将延迟事件收集到副输出中,而不是长时间允许延迟,那么它对您有用吗?

更新:

保留的元数据是继续向窗口添加事件所需的状态。这是允许延迟事件的代价。