flink程序本地运行:No ExecutorFactory found to execute the application

1.问题描述

在idea中运行flink job程序出现如下错误:

Exception in thread "main" java.lang.IllegalStateException: No ExecutorFactory found to execute the application.

at org.apache.flink.core.execution.DefaultExecutorServiceLoader.getExecutorFactory(DefaultExecutorServiceLoader.java:88)

at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.executeAsync(StreamExecutionEnvironment.java:2085)

at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1983)

at org.apache.flink.streaming.api.environment.LocalStreamEnvironment.execute(LocalStreamEnvironment.java:68)

at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1969)

at test.ReadTextDemo.main(ReadTextDemo.java:19)

2.问题分析

程序代码如下;

XML 复制代码
<dependencies>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java</artifactId>
            <version>${flink.version}</version>
        </dependency>


        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.12</version>
        </dependency>
</dependencies>
java 复制代码
package test;

import org.apache.flink.api.java.io.TextInputFormat;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

/**
 * @Description
 * @Author XXX
 * @Date 2024/5/23
 * @Version 1.0
 */
public class ReadTextDemo {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        TextInputFormat textInputFormat = new TextInputFormat(null);
        DataStreamSource<String> source = env.readFile(textInputFormat, "D:\\datatest\\readtext.txt");
        source.print();
        env.execute("readText test");
    }
}

代码比较简单,应该没问题,因此不用分析。

从报错信息可以看出,程序没有找到执行器工厂(ExecutorFactory)来执行应用程序中的任务,网上查询了下,出现该报错的原因有以下几个:

参考:no executorfactory found to execute the application_慕课手记

因为改flink 程序没有什么配置,因此可以排除1、3,那最有可能得原因就是2,缺少pom依赖,通过在flink官网可知:

所以应该是缺少flink-clients依赖,加上pom依赖,问题得到解决:

XML 复制代码
 <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients</artifactId>
            <version>${flink.version}</version>
</dependency>
相关推荐
2501_9110676616 分钟前
探秘叁仟智盒设备:智慧城市的智能枢纽
大数据·人工智能·智慧城市
黄雪超1 小时前
核心知识—— RDD常用算子之数据转换
大数据·spark
AWS官方合作商1 小时前
AWS云服务:大数据公司实现技术突破与商业价值的核心引擎
大数据·云计算·aws
码界筑梦坊5 小时前
基于Spark的抖音数据分析热度预测系统
大数据·信息可视化·数据分析·spark·毕业设计·个性化推荐
生信学习小达人7 小时前
arcgis10.8 Toolbox中没有找到conversion tools模块
大数据
Oo_Amy_oO8 小时前
Airflow+Spark/Flink vs. Kettle
大数据·flink·spark
后端小肥肠8 小时前
港大团队开源LightRAG:知识图谱+双层检索,复杂问答准确率飙升30%
大数据·人工智能·openai
计算机毕设定制辅导-无忧学长20 小时前
TDengine 权限管理与安全配置实战(二)
大数据·安全·tdengine
2401_8979300620 小时前
Kibana 连接 Elasticsearch(8.11.3)教程
大数据·elasticsearch·jenkins
计算机毕设定制辅导-无忧学长20 小时前
TDengine 快速上手:安装部署与基础 SQL 实践(一)
大数据·sql·tdengine