【问题标题】:Flink stream orderFlink 流顺序
【发布时间】:2021-09-08 15:40:51
【问题描述】:

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");

【问题讨论】:

    标签: java apache-flink


    【解决方案1】:

    事件将保持它们的相对顺序如果它们在执行图中采用相同的路径。否则,所有赌注都被取消。

    下面是keyBy 可能发生的情况的示例。最初事件的顺序为 1、2、A

    但是keyBy 将 A 发送到与 1 和 2 不同的路径:

    之后我们可能会看到 A、1、2(如图所示)或 1、A、2 或 1、2、A。

    【讨论】:

    • 只是出于好奇:这些图片来自 Flink 文档吗?如果有,是哪个页面?
    • 不,我从 Flink 培训材料中提取了这些图像。
    猜你喜欢
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多