Apache Flink SQL

2020-07-03 00:00:00 数据 字段 元素 窗口 语义

本篇核心目标是让大家概要了解一个完整的 Apache Flink SQL Job 的组成部分,以及 Apache Flink SQL 所提供的核心算子的语义,后会应用 TumbleWindow 编写一个 End-to-End 的页面访问的统计示例。

1.Apache Flink SQL Job 的组成


我们做任何数据计算都离不开读取原始数据,计算逻辑和写入计算结果数据三部分,当然基于 ApacheFlink SQL 编写的计算 Job 也离不开这个三部分,如下所所示:


如上所示,一个完整的 Apache Flink SQL Job 由如下三部分:

  • Source Operator – Soruce operator 是对外部数据源的抽象, 目前 Apache Flink 内置了很多常用的数据源实现,比如上图提到的 Kafka。
  • Query Operators – 查询算子主要完成如图的 Query Logic,目前支持了Union,Join,Projection,Difference, Intersection 以及 window 等大多数传统数据库支持的操作。
  • Sink Operator – Sink operator 是对外结果表的抽象,目前 Apache Flink 也内置了很多常用的结果表的抽象,比如上图提到的 Kafka。

大数据Flink讨论群

2.Apache Flink SQL 核心算子


SQL 是 StructuredQuevy Language 的缩写,初是由美国计算机科学家 Donald D. Chamberlin 和 Raymond F. Boyce 在 20 世纪 70 年代早期从 Early History of SQL 中了解关系模型后在 IBM 开发的。该版本初称为[SEQUEL: A Structured EnglishQuery Language](结构化英语查询语言),旨在操纵和检索存储在 IBM 原始准关系数据库管理系统 System R 中的数据。直到 1986 年, ANSI 和 ISO 标准组正式采用了标准的”数据库语言 SQL”语言定义。Apache Flink SQL 核心算子的语义设计也参考了 1992 、2011 等 ANSI-SQL 标准。接下来我们将简单为大家介绍 Apache Flink SQL 每一个算子的语义。

2.1 SELECT


SELECT 用于从数据集/流中选择数据,语法遵循 ANSI-SQL 标准,语义是关系代数中的投影(Projection),对关系进行垂直分割,消去某些列。

一个使用 Select 的语句如下:

SELECT ColA, ColC FROME tab ;

相关文章