apache flink-流中记录的排序


0

以下是我的一些疑问:

stream1和stream1的两个元素顺序不同。

1) 现在,当我对每一个数据流执行keyBy操作时,这个命令会保持吗?(因为这里的每个组将只发送给一个任务管理器)

2) 在对这两个流执行keyBy之后,我将进行co-group以获取匹配和不匹配的记录。这里也能维持秩序吗?,因为这也适用于KeyedStream。

3) 现在我想用map/flatmap对我从2)得到的匹配的非匹配流执行序列检查。

4) slotSharingGroup-你能详细描述一下吗

2 答案


0

1) 是与否。Flink使用所谓的 watermark来跟踪订单。这样可以确保可以将记录分配到正确的窗口,并且在所有数据可用之前不会关闭窗口。但是,不能保证每个组都有严格的顺序(因为并行传入数据)。在组之间, root本没有订购保证。

2) 与(1)的答案基本相同。

3) 您不需要再次使用keyBy。默认情况下, map /平面 map 将被 chaining接。

4) 看到了吗https://ci.apache.org/projects/flink/flink-docs-release-1.0/internals/general_arch.html-过程


0

关于订货保证

本页提供了一个很好的概述和 explain,以及订购保证:https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/concepts.htmlparallel-数据流

要点是:

在每个并行流分区中保持顺序。有关流分区的说明,请参阅此处:https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/concepts.htmlparallel-数据流

对于改变分区的“keyBy()”或“rebalance()”之类的操作,顺序是按每对源流和目标流分区来维护的,这意味着每对发送和接收运算符都是这样。

正如Matthias所提到的,如果一个组(由一个 key定义,在一个接收目标操作符上运行)从多个发送方获取元素,那么就没有定义好的严格的元素顺序。使用事件时间这样的概念,您可以 root据数据(附加的时间戳)施加有意义的顺序。


我来回答

写文章

提问题

面试题