一、执行环境

TableEnvironment 是 Flink Table API 和 Flink SQL 中使用的执行环境,向上对开发者提供了 Flink SQL 使用的相关接口,向下连接 Flink 的 SQL 运行时。

二、Table

Table 是 Flink Table API 的核心操作对象,提供了流批统一的数据操作行为定义。对于批处理 Table 是静态表,对于流计算 Table 是动态表。动态表在 Flink 中抽象为 Table 接口。与表示批处理数据的静态表相比,动态表随时间而变化。将 SQL 查询作用于动态表,查询会持续执行而不会终止,叫作连续查询。

三、元数据 Catalog 体系

Flink Table API 和 Flink SQL 也需要依赖于元数据。元数据描述了 Flink 处理的读取和写出的数据的结构以及数据的访问方法等信息,是 Flink 中实现 SQL 处理数据的重要组成部分,没有元数据 SQL 就无法校验、优化。

四、Planner

Planner 通过 parser(解析器)、validator(验证器)、optimizer(优化器)、codegen(代码生成技术)等流程将 Table API & SQL 作业转换成 Flink Runtime 可识别的 Transformation DAG (由 Transformation 组成的有向无环图,表示作业的转换逻辑),最终由 Flink Runtime 进行作业的调度和执行。

Planner

五、总结

5.1. SQL 执行

  1. 一条聚合 SQL 语句的执行过程~

  2. 一条连接 SQL 语句的执行过程~