我正在尝试使用eclipse使用以下代码在Java中使用表API创建flink中的表。
EnvironmentSettings settings = EnvironmentSettings
.newInstance()
.inStreamingMode()
.build();
TableEnvironment tEnv = TableEnvironment.create(settings);
tEnv.executeSql("CREATE TABLE sink_table (" +
" `user_a` BIGINT," +
" `product` VARCHAR," +
" `amount` BIGINT," +
" `name_list` ARRAY<STRING>," +
" `id_list` ARRAY<INT>," +
" PRIMARY KEY (user_a) NOT ENFORCED " +
") WITH (" +
")");
但是程序没有在Flink SQL Client中创建任何表就退出了。如何创建表?
注意:它是通过SQL客户端直接创建的。另外,我的环境是通过eclipse的相同设置来运行Word Count Program。
也可以查看https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/create/查看类似的代码。
Flink SQL表只不过是对如何解释存储(或将要存储)在其他地方的数据的描述。当你创建这样一个表时,有必要指定数据实际在哪里(或将被写入):例如,Kafka主题,文件,PostgreSQL表等。关于数据存储位置的信息放在CREATE TABLE
语句的WITH (...)
部分。
如果您希望在多个应用程序和/或SQL Client中使用此表,您有几个选项。您可以使用相同的"CREATE TABLE…"的副本。在您希望使用同一表的每个位置,或者您可以将表(不是底层数据,而只是表元数据)保存在目录中。
在您在问题中共享的Java代码中,您已经在临时目录中为那个作业创建了一个表。如果您希望SQL客户端能够直接使用它,则需要将其保存在持久目录中,或者您可以在SQL客户端中创建一个重复表(此"duplicate"将引用相同的基础数据;只有表元数据会被复制)。
由于这个表没有关联任何数据存储,所以它不是很有用。