hi,
感谢详细的解释和回复。那问题就清楚了。之前我们的job提交框架里统一都使用了StreamExecutionEnvironment.execute(jobName)方法,现在基于这个解释就明白了。

















在 2020-07-12 22:55:34,"godfrey he" <[email protected]> 写道:
>hi sunfulin,
>
>1.11 对 StreamTableEnvironment.execute()
>和 StreamExecutionEnvironment.execute() 的执行方式有所调整,
>简单概述为:
>1. StreamTableEnvironment.execute() 只能执行 sqlUpdate 和 insertInto 方法执行作业;
>2. Table 转化为 DataStream 后只能通过 StreamExecutionEnvironment.execute() 来执行作业;
>3. 新引入的 TableEnvironment.executeSql() 和 StatementSet.execute() 方法是直接执行sql作业
>(异步提交作业),不需要再调用 StreamTableEnvironment.execute()
>或 StreamExecutionEnvironment.execute()
>
>详细可以参考 [1] [2]
>
>
>
>对于 “No operators defined in streaming topology.”,如果使用
>TableEnvironment.executeSql() 或者 StatementSet.execute() 方法提交的作业后再调用
>StreamTableEnvironment.execute() 或 StreamExecutionEnvironment.execute()
>提交作业,就会出现前面的错误。
>
>对于
>“是不是不推荐在作业里同时使用executeSQL和StatementSet.execute?”,这个答案是no。executeSql和StatementSet不会相互干扰。对于出现的错误,能给一个更详细的提交作业的流程描述吗?
>
>
>[1]
>https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/dev/table/common.html#%E7%BF%BB%E8%AF%91%E4%B8%8E%E6%89%A7%E8%A1%8C%E6%9F%A5%E8%AF%A2
>[2]
>https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/dev/table/common.html#%E5%B0%86%E8%A1%A8%E8%BD%AC%E6%8D%A2%E6%88%90-datastream-%E6%88%96-dataset
>
>Best,
>Godfrey
>
>Leonard Xu <[email protected]> 于2020年7月12日周日 下午1:48写道:
>
>> HI, fulin
>>
>> 能大致贴下代码吗?能复现异常即可。简单说下这两个方法,
>>  TableEnvironment.executeSql(String statement)是为了用于执行单条的 sql 语句, SQL语句可以是
>> DDL/DML/DCL/DQL, DML(如insert)和DQL(如select)的执行是等 Flink
>> job提交后返回该方法的执行结果,DDL(create table ...) 和 DCL(use database …)
>> 的执行是对应的SQL语句执行完成就返回,理解起来就是需要提交 Flink job 的SQL需要等 job 提交后返回结果,其他是立即执行并返回。
>> Statementset.execute() 主要用于执行批量的 sql 语句,sql 语句只能是 insert xx,可以看接口的方法,
>> 这个接口主要是为了 SQL 里有多个query的情况, (比如multiple sink:insert tableA from xx ;insert
>> tableB from xx), 如果调用 TableEnvironment.executeSql(“insert tableA from xx”),
>> TableEnvironment.executeSql(“insert tableA from xx”) 就会起两个 Flink job,
>> 这应该不是用户需要的。
>> 具体使用根据你的需要来使用。
>>
>>
>> Best,
>> Leonard Xu
>>
>>
>> 在 2020年7月11日,22:24,sunfulin <[email protected]> 写道:
>>
>> statementset.execute
>>
>>
>>

回复