You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by Asahi Lee <97...@qq.com> on 2020/09/07 14:26:50 UTC
回复: 1.11版本,创建视图后,根据表名称获取视图表对象,表名为临时名称的问题
你好!
下面的程序我理解的是StreamTableEnvironment.from("")是获取我之前创建的表,但是实际的结果还是获取的是临时表,我认为应该获取的是datagen的table对象,应保证包含表名在内的元数据的一致性;
我的测试程序:
package org.apache.flink.playgrounds.spendreport;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
import java.util.Arrays;
public class Test2 {
public static void main(String[] args) {
StreamExecutionEnvironment bsEnv = StreamExecutionEnvironment.getExecutionEnvironment();
EnvironmentSettings bsSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
StreamTableEnvironment bsTableEnv = StreamTableEnvironment.create(bsEnv, bsSettings);
String sourceDDL = "CREATE TABLE datagen ( " +
" f_random INT," +
" f_random_str STRING " +
" ) WITH ( " +
" 'connector' = 'datagen', " +
" 'rows-per-second'='10'," +
" 'fields.f_random.min'='1', " +
" 'fields.f_random.max'='10', " +
" 'fields.f_random_str.length'='10' " +
" ) ";
bsTableEnv.executeSql(sourceDDL);
for (int i = 0; i < 10; i++) {
Table datagen = bsTableEnv.from("datagen");
System.out.println(datagen);
}
System.out.println("-----------------" + Arrays.toString(bsTableEnv.listTables()));
}
}
控制台:
UnnamedTable$0
UnnamedTable$1
UnnamedTable$2
UnnamedTable$3
UnnamedTable$4
UnnamedTable$5
UnnamedTable$6
UnnamedTable$7
UnnamedTable$8
UnnamedTable$9
-----------------[UnnamedTable$0, UnnamedTable$1, UnnamedTable$2, UnnamedTable$3, UnnamedTable$4, UnnamedTable$5, UnnamedTable$6, UnnamedTable$7, UnnamedTable$8, UnnamedTable$9, datagen]