概览
This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.

Table API & SQL #

Apache Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。Table API 是用于 Scala 和 Java 语言的查询API,它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。Flink SQL 是基于 Apache Calcite 来实现的标准 SQL。无论输入是连续的(流式)还是有界的(批处理),在两个接口中指定的查询都具有相同的语义,并指定相同的结果。

Table API 和 SQL 两种 API 是紧密集成的,以及 DataStream API。你可以在这些 API 之间,以及一些基于这些 API 的库之间轻松的切换。比如,你可以先用 CEP 从 DataStream 中做模式匹配,然后用 Table API 来分析匹配的结果;或者你可以用 SQL 来扫描、过滤、聚合一个批式的表,然后再跑一个 Gelly 图算法 来处理已经预处理好的数据。

Table 程序依赖 #

取决于你使用的编程语言,选择 Java 或者 Scala API 来构建你的 Table API 和 SQL 程序:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table-api-java-bridge_2.11</artifactId>
  <version>1.15-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table-api-scala-bridge_2.11</artifactId>
  <version>1.15-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>
$ python -m pip install apache-flink

除此之外,如果你想在 IDE 本地运行你的程序,你需要添加下面的模块,具体用哪个取决于你使用哪个 Planner:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table-planner_2.11</artifactId>
  <version>1.15-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-scala_2.11</artifactId>
  <version>1.15-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>

扩展依赖 #

如果你想实现自定义格式或连接器 用于(反)序列化行或一组用户定义的函数,下面的依赖就足够了,编译出来的 jar 文件可以直接给 SQL Client 使用:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table-common</artifactId>
  <version>1.15-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>

Back to top

接下来? #

  • 公共概念和 API: Table API 和 SQL 公共概念以及 API。
  • 数据类型: 内置数据类型以及它们的属性
  • 流式概念: Table API 和 SQL 中流式相关的文档,比如配置时间属性和如何处理更新结果。
  • 连接外部系统: 读写外部系统的连接器和格式。
  • Table API: Table API 支持的操作。
  • SQL: SQL 支持的操作和语法。
  • 内置函数: Table API 和 SQL 中的内置函数。
  • SQL Client: 不用编写代码就可以尝试 Flink SQL,可以直接提交 SQL 任务到集群上。

Back to top