2021年大数据Flink(三十):Flink Table API SQL 介绍
目錄
???????Table API?& SQL 介紹
為什么需要Table API & SQL
???????Table API& SQL發展歷程
架構升級
查詢處理器的選擇
了解-Blink planner和Flink Planner具體區別如下:
注意:
API穩定性
性能對比
Table API?& SQL 介紹
為什么需要Table API & SQL
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/
?
?
Flink的Table模塊包括 Table API 和 SQL:
Table API 是一種類SQL的API,通過Table API,用戶可以像操作表一樣操作數據,非常直觀和方便
SQL作為一種聲明式語言,有著標準的語法和規范,用戶可以不用關心底層實現即可進行數據的處理,非常易于上手
Flink Table API 和 SQL 的實現上有80%左右的代碼是公用的。作為一個流批統一的計算引擎,Flink 的 Runtime 層是統一的。
?
- Table API & SQL的特點
Flink之所以選擇將 Table API & SQL?作為未來的核心 API,是因為其具有一些非常重要的特點:
?
1. 聲明式:屬于設定式語言,用戶只要表達清楚需求即可,不需要了解底層執行;
2. 高性能:可優化,內置多種查詢優化器,這些查詢優化器可為 SQL 翻譯出最優執行計劃;
3. 簡單易學:易于理解,不同行業和領域的人都懂,學習成本較低;
4. 標準穩定:語義遵循SQL標準,非常穩定,在數據庫 30 多年的歷史中,SQL 本身變化較少;
5. 流批統一:可以做到API層面上流與批的統一,相同的SQL邏輯,既可流模式運行,也可批模式運行,Flink底層Runtime本身就是一個流與批統一的引擎
?
???????Table API& SQL發展歷程
架構升級
自 2015 年開始,阿里巴巴開始調研開源流計算引擎,最終決定基于 Flink 打造新一代計算引擎,針對 Flink 存在的不足進行優化和改進,并且在 2019 年初將最終代碼開源,也就是Blink。Blink 在原來的 Flink 基礎上最顯著的一個貢獻就是 Flink SQL 的實現。隨著版本的不斷更新,API 也出現了很多不兼容的地方。
在 Flink 1.9 中,Table 模塊迎來了核心架構的升級,引入了阿里巴巴Blink團隊貢獻的諸多功能
?
在Flink 1.9 之前,Flink API 層 一直分為DataStream API 和 DataSet API,Table API & SQL 位于 DataStream API 和 DataSet API 之上??梢钥刺幜魈幚砗团幚碛懈髯元毩⒌腶pi (流處理DataStream,批處理DataSet)。而且有不同的執行計劃解析過程,codegen過程也完全不一樣,完全沒有流批一體的概念,面向用戶不太友好。
在Flink1.9之后新的架構中,有兩個查詢處理器:Flink Query Processor,也稱作Old Planner和Blink Query Processor,也稱作Blink Planner。為了兼容老版本Table及SQL模塊,插件化實現了Planner,Flink原有的Flink Planner不變,后期版本會被移除。新增加了Blink Planner,新的代碼及特性會在Blink planner模塊上實現。批或者流都是通過解析為Stream Transformation來實現的,不像Flink Planner,批是基于Dataset,流是基于DataStream。
?
查詢處理器的選擇
查詢處理器是 Planner 的具體實現,通過parser、optimizer、codegen(代碼生成技術)等流程將 Table API & SQL作業轉換成 Flink Runtime 可識別的 Transformation DAG,最終由 Flink Runtime 進行作業的調度和執行。
Flink Query Processor查詢處理器針對流計算和批處理作業有不同的分支處理,流計算作業底層的 API 是 DataStream API, 批處理作業底層的 API 是 DataSet API
Blink Query Processor查詢處理器則實現流批作業接口的統一,底層的 API 都是Transformation,這就意味著我們和Dataset完全沒有關系了
?
Flink1.11之后Blink Query Processor查詢處理器已經是默認的了
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/
?
?
?
?
了解-Blink planner和Flink Planner具體區別如下:
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/common.html
?
?
?
注意:
https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/common.html
API穩定性
?
?
性能對比
注意:目前FlinkSQL性能不如SparkSQL,未來FlinkSQL可能會越來越好
下圖是Hive、Spark、Flink的SQL執行速度對比:
?
總結
以上是生活随笔為你收集整理的2021年大数据Flink(三十):Flink Table API SQL 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Flink(二十九):F
- 下一篇: 2021年大数据Flink(三十一):