Apache Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。Table API 是用于 Scala 和 Java 语言的查询 API,它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。Flink SQL 是基于 Apache Calcite 来实现的标准 SQL。无论输入是连续的(流式)还是有界的(批处理),在两个接口中指定的查询都具有相同的语义,并指定相同的结果。
目录
基本概念
Table API 和 SQL 集成在同一套 API 中。这套 API 的核心概念是 Table,用作查询的输入和输出。下面我们将介绍 Table API 和 SQL 查询程序的通用结构、如何注册 Table、如何查询 Table 以及如何输出 Table。
下面的代码示例展示了 Table API 和 SQL 程序的通用结构。
import org.apache.flink.connector.datagen.table.DataGenConnectorOptions;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.*;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
public class TableApiExample {
public static void main(String[] args) {
// 为指定的流或者批计划器创建一个 TableEnvironment.