1)概览
1.Table API & SQL
Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。
Table API 是用于 Scala 和 Java 语言的查询API,它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。
Flink SQL 是基于 Apache Calcite 来实现的标准 SQL。
无论输入是连续的(流式)还是有界的(批处理),在两个接口中指定的查询都具有相同的语义,并指定相同的结果。
2)概念与通用 API
1.概述
Table API 和 SQL 集成在同一套 API 中,这套 API 的核心概念是Table
,用作查询的输入和输出。
2.Table API 和 SQL 程序的结构
所有用于批处理和流处理的 Table API 和 SQL 程序都遵循相同的模式,下面的代码示例展示了 Table API 和 SQL 程序的通用结构。
import org.apache.flink.table.api.*;
import org.apache.flink.connector.datagen.table.DataGenConnectorOptions;
// 创建一个 TableEnvironment 为 batch or streaming 执行.
TableEnvironment tableEnv = TableEnvironment.create(/*…*/);
// 创建一个 source