Apache Flink Create Table



我正在尝试使用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"将引用相同的基础数据;只有表元数据会被复制)。

由于这个表没有关联任何数据存储,所以它不是很有用。

最新更新