下面是我观看的演示中有关Flink优化器的幻灯片。我对 Flink的优化器根据所提供数据集的基数决定并行性的评论感到困惑。
我目前正在阅读Flink 1.4(我正在使用的版本)文档,但似乎找不到关于Flink决定并行性的任何文档。 我是否需要向Flink的优化器提供有关数据集的统计信息才能利用此功能?
在相关说明中,我认为通过指定maxParallelism值,这可能使Flink能够动态地确定哪种并行度自动适用于所提供的数据集(如上所述)。但是,我无法指定Flink 1.4文档中指定的最大并行度,这就是为什么我无法验证我的假设的原因。在某些情况下,我正在使用DataSet API。 如何在Flink中指定最大并行度?
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setMaxParallelism(20); // can't seem to call this method on env
答案 0 :(得分:1)
不确定您在哪里找到了此演示文稿,但是它很老,可能是2014年或2015年初。
幻灯片讨论了Flink的DataSet API的优化器。优化器不用于优化DataStream API程序。另一方面,最大并行度的设置仅适用于DataStream API程序,不适用于DataSet程序。
引用的句子在项目符号“目标:数据处理计划的有效执行计划”下。不是所有的子点都已实现,包括执行并行执行的自动配置。
roadmap of the Flink community包括将DataSet API集成到DataStream API中并删除优化器的计划。 Flink的Table API / SQL将继续使用基于成本的优化器(基于Apache Calcite),并且将来可能还会配置执行并行性。