将flink从1.10升级到1.11,遇到错误“No ExecutorFactory found to run the application”

问题描述 投票:0回答:4
java.lang.IllegalStateException: No ExecutorFactory found to execute the application.
    at org.apache.flink.core.execution.DefaultExecutorServiceLoader.getExecutorFactory(DefaultExecutorServiceLoader.java:84)
    at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.executeAsync(StreamExecutionEnvironment.java:1803)
    at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1713)
    at org.apache.flink.streaming.api.environment.LocalStreamEnvironment.execute(LocalStreamEnvironment.java:74)
    at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1699)
    at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1681)
    at com.cep.StaticAlarmGenerationEntryTest.main(StaticAlarmGenerationEntryTest.java:149)

我将FLink从1.10升级到1.11后遇到的错误,我的IDE是eclipse。 我尝试添加artifactId:flink-clients_${scala.binary.version},但仍然失败。有谁已经遇到并解决了这个问题,请告诉我。非常感谢。

apache-flink
4个回答
22
投票

请参阅 1.11 发行说明,您现在必须在其中添加对

flink-clients
的显式依赖项。


2
投票

我已经这样解决了我的问题:

1.使用Java 8,显然Flink与Java 11或15有某种问题

2.将所有Scope改为“compile” 您可以在此路径中更改范围:项目结构→模块→依赖项→有一个表,其列名称之一是范围

enter image description here


1
投票

我通过添加依赖项找到了错误发生的原因

flink-clients
。我将Flink从1.10升级到1.11,只是编辑了Flink的版本,但没有更改Scala版本。这里还应该将Scala版本更改为2.12。该项目是基于1.10原型生成的,Scala版本是2.11。每次我构建项目时,它都使用 2.11 环境。 所以解决这个问题的快速方法是:

  1. 使用
    mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.11.0
    这个命令来生成新项目。
  2. 将所有旧代码复制到这个新项目中。你会发现pom.xml中已经添加了
    flink-clinets

0
投票

当我将 flink 作业打包到一个阴影罐子中时,我遇到了这个问题。着色时,如果多个 jar 中有相同名称的文件,它将在将每个 jar 解压缩到新的着色 jar 时覆盖该文件。

Flink 使用文件

META-INF/services/org.apache.flink.core.execution.PipelineExecutorFactory
来发现不同的执行器工厂,并且该文件存在于多个 jar 中,每个 jar 都有不同的内容。

为了解决这个问题,我必须告诉 maven-shade 插件在遇到这些文件时将它们组合在一起,这解决了我的问题。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>job</shadedClassifierName>
                <transformers>
                    <!-- add this to combine the PipelineExecutorFactory files into one -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/services/org.apache.flink.core.execution.PipelineExecutorFactory</resource>
                    </transformer>
                </transformers>
...
© www.soinside.com 2019 - 2024. All rights reserved.