Flink 中的订单保存联合/合并执行器

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

我想使用 Flink 合并两个(多个)流。两个流本身都是有序的,我希望合并结果也被排序。举个例子

[1,2,4,5,7,8, ...] and [2,3,6,7, ..]

应该产生以下结果。

[1,2,2,3,4,5,6,7,7,8,...]

有适合此用例的操作员吗?

apache-flink flink-streaming flink-sql stream-processing
1个回答
1
投票

我想不出使用内置运算符来完成此操作的简单方法。

我可能会使用 KeyedCoProcessFunction 来实现它。此用例需要等待两个输入中的下一个元素,然后才能知道要发出哪个元素,这意味着您必须准备好缓冲来自任一输入流的任意多个元素,同时等待来自另一个流的下一个元素。您可以使用 ListState 来存储该缓冲区。

更新:

如果该字段是时间戳,那么您可以合并流并按事件时间戳对合并结果进行排序。这可以使用 Flink SQL 相当简单地完成。

文档:UNION 订购方式

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