使用flink tableApi 进行表和流转换报错
Exception in thread "main" java.lang.IllegalStateException: No operators defined in streaming topology. Cannot generate StreamGraph.
at org.apache.flink.table.planner.utils.ExecutorUtils.generateStreamGraph(ExecutorUtils.java:40)
at org.apache.flink.table.planner.delegation.StreamExecutor.createPipeline(StreamExecutor.java:50)
at org.apache.flink.table.api.internal.TableEnvironmentImpl.execute(TableEnvironmentImpl.java:1460)
at com.quant.flowcalculation.flinkapi.tableapi.TableApiKafka.main(TableApiKafka.java:75)
代码的结构如下:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
EnvironmentSettings settings = EnvironmentSettings
.newInstance()
.useBlinkPlanner()
.inStreamingMode()
.build();
StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, settings);
//注册source和sink
tEnv.executeSql(sourceDDL);
// 数据提取
Table sourceTable = tEnv.from("kafka_source");
DataStream<Row> rowDataStream = tEnv.toDataStream(sourceTable);
rowDataStream.print();
// 执行作业
tEnv.execute("flink-connection-kafka");
解决办法:
Flink1.13版本对于两个env的execute代码实现有改动,在1.13版本里需要用
// 执行作业
env.execute("flink-connection-kafka");