Flink:将事件附加到有限DataStream的末尾

问题描述 投票:0回答:2

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

  • a1, a2, ..., an

如何将另外一个事件b附加到此流来获取

  • a1, a2, ..., an, b

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

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

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

apache-flink flink-streaming
2个回答
1
投票

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


0
投票

另一种方法可能是将原始数据源“包装”在另一个数据源中,当委托对象的run()方法返回时,该数据源会发出最终元素。当然,您需要小心地调用所有委托方法。

© www.soinside.com 2019 - 2024. All rights reserved.