Apache flink Flink:将事件附加到有限数据流的末尾

Apache flink Flink:将事件附加到有限数据流的末尾,apache-flink,flink-streaming,Apache Flink,Flink Streaming,假设有来自数据库源的有限数据流,例如带有事件的数据流 a1,a2,…,an。 如何向该流追加一个事件b以获取 a1,a2,…,an,b i、 e.在所有原始事件之后输出添加的事件,保留原始顺序 我知道所有有限流在所有事件之后都会发出MAX_水印。那么,有没有办法捕获此水印并在其之后输出附加事件 不幸的是,.将原始数据流与另一个数据流联合起来,该数据流由一个时间戳设置为Long.MaxValue的事件组成,然后使用对联合的数据流进行排序是不起作用的。也许我遗漏了什么,但似乎您可以简单地使用Proc

假设有来自数据库源的有限数据流,例如带有事件的数据流

a1,a2,…,an。 如何向该流追加一个事件b以获取

a1,a2,…,an,b i、 e.在所有原始事件之后输出添加的事件,保留原始顺序

我知道所有有限流在所有事件之后都会发出MAX_水印。那么,有没有办法捕获此水印并在其之后输出附加事件


不幸的是,.将原始数据流与另一个数据流联合起来,该数据流由一个时间戳设置为Long.MaxValue的事件组成,然后使用对联合的数据流进行排序是不起作用的。

也许我遗漏了什么,但似乎您可以简单地使用ProcessFunction,在遥远的将来的某个地方设置事件时间计时器,这样它只在MAX_水印到达时触发。然后在onTimer方法中,如果currentWatermark是MAX\u WATERMARK,则发出该特殊事件。

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

您提前知道计数吗?另外,如果它是一个有限集,为什么不能使用DataSet API而不是DataStream呢?谢谢!这对我有用。我不知道onTimer只有在水印到达时才会开火。