使用 Table 和 Datastream API 在 Flink 1.14 中进行全局排序

Global sort in Flink 1.14 with Table and Datastream APIs

我一直在寻找 Flink 1.14 中 bounded 数据的不同全局数据排序选项。我发现 Whosebug 和其他网站上关于此的许多问题已经有好几年了,关于已弃用的 APIs 或者没有完全回答这个问题。由于Flink发展迅速,想问一下最新稳定的Flink(1.14)中可用的选项

以下是我对当前情况的理解(可能有误)。我的问题也附上。 Flink 有两个 APIs - DataStreamTable - 在 batchstreaming 执行模式下可能 运行。 DataSet API 已弃用。

批量执行

流式执行

总的来说,我无法在 Flink 中找到一个真正并行的排序有界数据集的实现。我的上述发现是否正确?

考虑到 Flink 的组织方式,对于批处理,我认为最好的方法是对数据分区进行排序,然后合并这些排序的分区。最后一步不能并行完成。我不知道 Table/SQL API 是否会自动执行此类操作,但我怀疑在快速查看源代码后可能会执行此操作。

你可以在 flink 用户邮件列表 (https://flink.apache.org/community.html#how-to-subscribe-to-a-mailing-list) 上询问这个问题。

要更深入地了解 SQL 规划器如何执行批处理工作负载以及如何调整它们,我推荐 https://flink.apache.org/2021/10/26/sort-shuffle-part1.html