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},但仍然失败。有谁已经遇到并解决了这个问题,请告诉我。非常感谢。
请参阅 1.11 发行说明,您现在必须在其中添加对
flink-clients
的显式依赖项。
我通过添加依赖项找到了错误发生的原因
flink-clients
。我将Flink从1.10升级到1.11,只是编辑了Flink的版本,但没有更改Scala版本。这里还应该将Scala版本更改为2.12。该项目是基于1.10原型生成的,Scala版本是2.11。每次我构建项目时,它都使用 2.11 环境。
所以解决这个问题的快速方法是:
mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.11.0
这个命令来生成新项目。flink-clinets
。当我将 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>
...