Apache Flink 创建表

问题描述 投票:0回答:1

我正在尝试使用以下代码在 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 设置运行字数统计程序。

另请检查 https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/create/ 是否有类似代码。

apache-flink flink-table-api
1个回答
3
投票

在 Apache Flink SQL 中,表只不过是如何解释存储(或将存储)在其他地方的数据的描述。当您创建这样的表时,有必要指定数据的实际位置(或要写入的位置):例如 Kafka 主题、文件、PostgreSQL 表等。有关数据存储位置的信息位于

WITH (...)
CREATE TABLE
声明的一部分。

如果您想在多个应用程序和/或 SQL 客户端中使用该表,您有多种选择。您可以在您想要使用同一个表的每个地方使用相同的“CREATE TABLE ...”的副本,或者您可以将表(不是基础数据,而只是表元数据)保存在目录中。

在您在问题中共享的 Java 代码中,您已在临时目录中为该作业创建了一个表。如果您希望 SQL 客户端能够直接使用它,则需要将其保存在持久目录中,或者您可以在 SQL 客户端中创建一个重复表(此“重复”将引用相同的基础数据;仅表元数据将会重复)。

由于该表没有与任何数据存储关联,因此它不是很有用。

© www.soinside.com 2019 - 2024. All rights reserved.