返回介绍

Table API 和 SQL

发布于 2025-05-02 18:19:15 字数 3128 浏览 0 评论 0 收藏

Apache Flink 具有两个关系 API - Table API 和 SQL - 用于统一流和批处理。 Table API 是 Scala 和 Java 语言集成查询 API,允许以非常直观的方式组合来自关系 算子的查询,例如选择,过滤和连接。Flink 的 SQL 支持基于实现 SQL 标准的 Apache Calcite 。无论输入是批输入(DataSet)还是流输入(DataStream),任一接口中指定的查询都具有相同的语义并指定相同的结果。

Table API 和 SQL 接口彼此紧密集成,以及 Flink 的 DataStream 和 DataSet API。您可以轻松地在基于 API 构建的所有 API 和库之间切换。例如,您可以使用 CEP 库 从 DataStream 中提取模式,然后使用 Table API 分析模式,或者可以在预处理上运行 Gelly 图算法 之前使用 SQL 查询扫描,过滤和聚合批处理表数据。

请注意, Table API 和 SQL 尚未完成函数并且正在积极开发中。并非[ Table API,SQL]和[stream,batch]输入的每种组合都支持所有 算子操作。

建立

Table API 和 SQL 捆绑在 flink-table Maven 工件中。必须将以下依赖项添加到项目中才能使用 Table API 和 SQL:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table_2.11</artifactId>
  <version>1.7-SNAPSHOT</version>
</dependency>

此外,您需要为 Flink 的 Scala 批处理或流 API 添加依赖项。对于批处理查询,您需要添加:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-scala_2.11</artifactId>
  <version>1.7-SNAPSHOT</version>
</dependency>

对于流式查询,您需要添加:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-scala_2.11</artifactId>
  <version>1.7-SNAPSHOT</version>
</dependency>

注意: 由于 Apache Calcite 中的一个问题阻止了用户类加载器被垃圾收集,我们 不 建议构建包含 flink-table 依赖项的 fat-jar 。相反,我们建议配置 Flink 以 flink-table 在系统类加载器中包含依赖项。这可以通过将 flink-table.jar 文件从 ./opt 文件夹复制到文件夹来完成 ./lib 。有关详细信息,请参阅 这些说明

下一步

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。