当使用侧输出 DataStream 时,Flink 如何处理延迟事件?
How Flink deals with late events when as side-output DataStream is used?
在我看来,Flink 以 3 种方式处理延迟事件:
- 在 window 过期(默认)时删除延迟事件。
- 通过使用“允许迟到”机制包括迟到事件来更新 window。
- 使用“侧输出”机制将延迟事件重定向到另一个 DataStream。
假设我有一个事件时间作业,它使用来自 Kafka 的数据并每 5 分钟处理一次 window。现在,假设我将延迟事件重定向到另一个 DataStream。
- 这个新的 DataStream 是独立的吗?
- 是否可以为该流分配一个 window 以便处理这些迟到的事件,我们假设每小时处理一次?
- 如果可能的话,在这个 window 触发后是否释放了内存?
谢谢大家!
来自 window 运算符的迟到事件流是一个独立的流,它只包含太迟以至于允许的迟到不足以容纳它们的事件。
你可以用这个流做任何你想做的事,包括通过另一个 window 发送它。但是这些事件仍然会迟到,因此您需要使用更宽松的策略来 re-generate 水印以防止它们仍然迟到,或者延长这个新 window.[= 的允许迟到时间。 10=]
Windows总是自己清理。
在我看来,Flink 以 3 种方式处理延迟事件:
- 在 window 过期(默认)时删除延迟事件。
- 通过使用“允许迟到”机制包括迟到事件来更新 window。
- 使用“侧输出”机制将延迟事件重定向到另一个 DataStream。
假设我有一个事件时间作业,它使用来自 Kafka 的数据并每 5 分钟处理一次 window。现在,假设我将延迟事件重定向到另一个 DataStream。
- 这个新的 DataStream 是独立的吗?
- 是否可以为该流分配一个 window 以便处理这些迟到的事件,我们假设每小时处理一次?
- 如果可能的话,在这个 window 触发后是否释放了内存?
谢谢大家!
来自 window 运算符的迟到事件流是一个独立的流,它只包含太迟以至于允许的迟到不足以容纳它们的事件。
你可以用这个流做任何你想做的事,包括通过另一个 window 发送它。但是这些事件仍然会迟到,因此您需要使用更宽松的策略来 re-generate 水印以防止它们仍然迟到,或者延长这个新 window.[= 的允许迟到时间。 10=]
Windows总是自己清理。