Flink 能保证流的执行顺序吗?
我有两个 Kafka 主题(每个主题都有一个分区),流 1 和流 2,并使用keyBy
,流由一个处理coprocess
功能。
在我的测试过程中,我可以看到两个流的内容并不总是按顺序执行。
我可以将并行度设置为 1 来解决此问题,但想了解我所看到的是否是预期的?
source1.keyBy(e -> e.f0);
source2.keyBy(e -> {
return new JSONObject(e.f1).getString("someOtherKey");
});
source1.connect(source2)
.process(new KeyedCoProcessFunction())
.uid("uid")
.name("name");
事件将保持其相对顺序如果它们在执行图中采用相同的路径。否则,一切皆废。
这是一个可能发生的情况的示例keyBy
。最初事件的顺序为 1, 2, A
but a keyBy
将 A 发送到与 1 和 2 不同的路径:
之后我们可能会看到 A, 1, 2(如此处所示),或 1, A, 2,或 1, 2, A。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)