陈卓宇 你好, 在默认情况下,所有提交后的DML都是异步执行的,详见TableEnvironment.executeSql(String statement)的注释。使用.await()和不使用.await()的区别是使用await()后会等待异步查询返回第一行结果(题外话:请注意INSERT和SELECT的区别),详见TableResult.await()注解,具体代码见TableResultImpl.awaitInternal(long timeout, TimeUnit unit), 由于此时入参timeout为-1,导致future.get()被调用, 强制等待resultProvider.isFirstRowReady()为true。
祝好 On Tue, Dec 21, 2021 at 10:00 AM 陈卓宇 <2572805...@qq.com.invalid> wrote: > 社区您好: > > String initialValues = > "INSERT INTO kafka\n" > + "SELECT CAST(price AS DECIMAL(10, 2)), currency, " > + " CAST(d AS DATE), CAST(t AS TIME(0)), CAST(ts AS > TIMESTAMP(3))\n" > + "FROM (VALUES (2.02,'Euro','2019-12-12', '00:00:01', > '2019-12-12 00:00:01.001001'), \n" > + " (1.11,'US Dollar','2019-12-12', '00:00:02', > '2019-12-12 00:00:02.002001'), \n" > + " (50,'Yen','2019-12-12', '00:00:03', '2019-12-12 > 00:00:03.004001'), \n" > + " (3.1,'Euro','2019-12-12', '00:00:04', '2019-12-12 > 00:00:04.005001'), \n" > + " (5.33,'US Dollar','2019-12-12', '00:00:05', > '2019-12-12 00:00:05.006001'), \n" > + " (0,'DUMMY','2019-12-12', '00:00:10', '2019-12-12 > 00:00:10'))\n" > + " AS orders (price, currency, d, t, ts)"; > tEnv.executeSql(initialValues).await(); > 我看了await他的注解但是感觉还是没有理解他的作用, > 使用.await()和不使用.await()的区别是什么? > 陈卓宇 > > >