以下是我的一些疑问:
我有两个不同的流stream1
and stream2
其中元素是有序的。
1)现在当我这样做时keyBy
在每个流上,顺序会保持不变吗? (因为这里的每个组都只会发送给一个任务管理器)
我的理解是记录将按小组顺序排列,请在这里纠正我。
2)之后keyBy
在这两个流上,我正在进行共同分组以获取匹配和不匹配的记录。这里的顺序也会维持吗?因为这也适用于KeyedStream
。
我在用EventTime
, and AscendingTimestampExtractor
用于生成timestamp
and watermark
.
3)现在我想对matching_nonMatchingStream
我从 2) 使用地图/平面图得到。
我需要再次执行keyBy
在这里,或者如果我被束缚的话matching_nonMatchingStream
运行在相同的TaskManager
?
我的理解是,链条将在这里工作,请纠正我,感到困惑。
4) slotSharingGroup
- 你能详细描述一下吗
根据文档:设置此操作的槽共享组。位于同一槽共享组中的操作的并行实例将共同位于同一槽中TaskManager
插槽,如果可能的话。
关于订购保证
此页面提供了很好的概述和解释,以及订购保证:https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/concepts.html#parallel-dataflows
要点是:
订单维持在每个并行流分区内。有关流分区的说明,请参见此处:https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/concepts.html#parallel-dataflows
对于像“keyBy()”或“rebalance()”这样改变分区的操作,顺序是按每对源和目标流分区维护的,即每对发送和接收操作符。
正如 Matthias 提到的,如果一个组(由一个键定义,在一个接收目标运算符上运行)从多个发送者获取元素,则不存在明确定义的严格元素顺序。使用事件时间等概念,您可以根据数据(附加的时间戳)施加有意义的排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)