FlinkTable异常 No ExecutorFactory

版本不匹配.

1. 报错信息

Exception in thread "main" 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 org.apache.flink.streaming.api.scala.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.scala:688)

2. 报错原因

flink1.11版本,移除了flink-streaming-java 对 flink-clients 的依赖,需要手动加入clients依赖。

3. 解决

在 pom 文件中手动添加依赖即可:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-clients_2.12</artifactId>
    <version>1.11.1</version>
</dependency>

private static class BatchSqlApp implements FlinkTable { @Override public void convertToSqlTable(TableEnvironment tableEnv) { // Create a BatchTableEnvironment BatchTableEnvironment batchTableEnv = TableEnvironment.getTableEnvironment(env); // Register a table from a CSV file CsvTableSource ordersCsv = new CsvTableSource("path/to/orders.csv", new String[]{"order_id", "customer_id", "order_date", "total_amount"}, new TypeInformation[]{ Types.INT(), Types.INT(), Types.SQL_DATE(), Types.DOUBLE() }); batchTableEnv.registerTableSource("orders", ordersCsv); // Register a table from a JDBC data source JdbcTableSource customersDb = JdbcTableSource.builder() .setDrivername("org.postgresql.Driver") .setDBUrl("jdbc:postgresql://localhost:5432/customers") .setUsername("user") .setPassword("password") .setQuery("SELECT customer_id, first_name, last_name, address FROM customers") .build(); batchTableEnv.registerTableSource("customers", customersDb); // Register a user-defined function ScalarFunction discount = new ScalarFunction() { public double eval(double price) { if (price > 100) { return price * 0.9; } else { return price; } } }; batchTableEnv.registerFunction("discount", discount); // Run a SQL query on the registered tables String query = "SELECT c.first_name, c.last_name, SUM(o.total_amount) as total_spent " + "FROM customers c JOIN orders o ON c.customer_id = o.customer_id " + "WHERE o.order_date BETWEEN '2019-01-01' AND '2019-12-31' " + "GROUP BY c.first_name, c.last_name " + "HAVING total_spent > 1000"; Table resultTable = batchTableEnv.sqlQuery(query); // Print the result table resultTable.printSchema(); resultTable.print(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带着希望活下去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值