No operators defined in streamin

2020-11-30  本文已影响0人  〇白衣卿相〇

Flink 1.11版本对Table&SQL模块进行了重构,废弃了TableEnvironment.sqlUpdate方法,引入了TableEnvironment.executeSql、StatementSet.execute方法。
在进行测试时报如下异常

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:47)
            at org.apache.flink.table.planner.delegation.StreamExecutor.createPipeline(StreamExecutor.java:47)
            at org.apache.flink.table.api.internal.TableEnvironmentImpl.execute(TableEnvironmentImpl.java:1213)
            at sql.operator.SinkToBlackhole.main(SinkToBlackhole.java:20)

查看源码后知道原因了
由于1.10的习惯 在程序最后一般都会调用TableEnvironment.execute或StreamExecutionEnvironment.execute方法。
问题就在这里,由于executeSql已经是异步提交了作业,生成Transformation后会把缓存的Operation清除,见TableEnvironmentImpl#translateAndClearBuffer,执行execute也会走那一段逻辑,报了上面异常,但是这个异常不影响程序执行。

上一篇下一篇

猜你喜欢

热点阅读