首页 > 解决方案 > Flink:将事件附加到有限数据流的末尾

问题描述

假设有一个带有事件的有限 DataStream(例如来自数据库源)

如何在b此流中再追加一个事件以获取

(即在所有原始事件之后输出添加的事件,保留原始顺序)?

我知道所有有限的流都会发出MAX_WATERMARK毕竟事件。那么,有没有办法“捕捉”这个水印并在它之后输出附加事件?

(不幸的是,.union()将原始 DataStream 与另一个 DataStream 组成一个事件(时间戳设置为Long.MaxValue)然后使用此答案对联合流进行排序不起作用。)

标签: apache-flinkflink-streaming

解决方案


也许我遗漏了一些东西,但似乎你可以简单地拥有一个 ProcessFunction 并为遥远的将来某个地方设置一个事件时间计时器,这样它只会在 MAX_WATERMARK 到达时触发。然后在 onTimer 方法中,如果 currentWatermark 为 MAX_WATERMARK,则发出该特殊事件。


推荐阅读