我正在使用在Docker上运行的Flink 1.2.1,任务管理器作为Docker Swarm的一部分分布在不同的VM上。
使用Flink Web UI上载Apache Beam应用程序并尝试在作业提交点设置并行性不起作用。也没有使用Flink CLI提交作业。
似乎并行性没有在客户端获得,它最终默认为1。
当我在Apache Beam代码中以编程方式设置并行性时,它可以工作:flinkPipelineOptions.setParallelism(4);
我怀疑问题的根源可能在org.apache.beam.runners.flink.DefaultParallelismFactory
类中,因为它检查Flink的GlobalConfiguration,它可能无法获取传递给Flink的运行时值。
关于如何修复或解决这个问题的任何想法?我需要能够动态地更改并行性,因此编程方法不起作用,也不会在系统级别设置Flink配置。
我使用以下文档:https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/parallel.html https://beam.apache.org/documentation/sdks/javadoc/2.0.0/org/apache/beam/runners/flink/DefaultParallelismFactory.html
这可能应该在Beam Flink Runner中修复,但作为一种解决方法,您可以尝试以编程方式将并行性设置为-1
。这应该使翻译获得提交作业时指定的并行度。