No operators defined in streaming topology. Cannot generate StreamGraph

Flink1.11版本中,Table&SQL模块的重构导致了TableEnvironment.sqlUpdate方法被废弃,引入了新的executeSql和StatementSet.execute方法。文章详细解析了在使用这些新方法时遇到的No operators defined in streaming topology异常的原因及解决思路,指出executeSql方法的异步作业提交特性与旧版execute方法的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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也会走那一段逻辑,报了上面异常,但是这个异常不影响程序执行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值