我正在寻找最好的方法来合并多个(>20)flink流,这些流代表我们系统中不同的事件起源,它们都有相同的类型。
List<DataStream<Event>> dataStreams = ...
其中每个对象都是一个pojo(显然是一个抽象表示)
public class Event implements Serializable {
public String userId;
public long eventTimestamp;
public String eventData;
}
我最终只想得到一条流
DataStream<Event> merged;
有不同的管理方法: join
, coGroup
, map
/ flatMap
(使用 CoGroup
) & union
. 我不确定哪一个能给我提供从原始流到合并流的事件的最快吞吐量。此外,是否有一个操作符可以一次用于所有流,或者我应该一次只调用两个流?
我在找一条小溪
keyedBy userId
菲尔德,这有什么区别吗?
另一方面,下一步是“排序”事件(在每个 window
)对于每个 userId
由 eventTimestamp
按时间顺序排列 userId
.
1条答案
按热度按时间eivgtgni1#
如果事件有相同的类型,我肯定会同意
union
因为它是最简单的形式,也是最简单的形式。另外,请注意union将vararg作为参数,这基本上意味着您可以在一个调用中连接所有流。