极客时间_FlinkSQL 实战
一、批处理以及流处理技术发展
1.Lambda架构三层划分Batch Layer、Speed Layer和Serving Layer。
①、Batch Layer:主要用于实现对历史数据计算结果的保存,每天计算的结果都保存成为一个Batch View,然后通过对Batch View的计算,实现历史数据的计算。
②、Speed Layer正是用来处理增量的实时数据。
③、Serving Layer:Lambda架构的Serving Layer用于响应用户的查询请求,合并Batch View和Realtime View中的结果数据集到最终的数据集。
二、FlinkSQL流批一体统一处理架构思想设计
1.Table API、SQL
Table API 是一种关系型API,类SQL 的API,用户可以像操作表一样地操作数据,非常的直观和方便。
SQL 作为一个"人所皆知"的语言,如果一个引擎提供SQL,它将很容易被人们接受。这已经是业界很常见的现象了。
Table & SQL API 还有另一个职责,就是负责流处理和批处理统一的API层。
Flink的Table API和SQL是流批统一的API。这意味着Table API & SQL 在无论有限的批式输入还是无限的流式输入下,都具有相同的语义。因为传统的关系代数以及SQL 最开始都是为了批式处理而设计的,关系型查询在流式场景下不如在批式场景下容易懂。
2.动态表
动态表是Flink的支持流数据的Table API 和SQL 的核心概念。与表示批处理数据的静态表不同,动态表是随时间变化的。可以像查询静态批处理表一样查询它们。查询动态表将生成一个连续查询。一个连续查询永远不会终止,结果会生成一个动态表。查询不断更新其(动态)结果表,以反映其(动态)输入表上的更