大數據開發實戰:Stream SQL實時開發
阿新 • • 發佈:2018-09-05
ima image 運行 使用 min 校驗 union 拓撲 流計算
1、流計算SQL原理和架構
流計算SQL通常是一個類SQL的聲明式語言,主要用於對流式數據(Streams)的持續性查詢,目的是在常見流計算平臺和框架(如Storm、Spark Streaming、Flink、Beam等)的底層API上,
通過使用簡易通用的的SQL語言構建SQL抽象層,降低實時開發的門檻。
流計算SQL的原理其實很簡單,就是在SQL和底層的流計算引擎之間架起一座橋梁---流計算SQL被用戶提交,被SQL引擎層翻譯為底層的API並在底層的流計算引擎上執行。比如對Storm
來說,會自動翻譯成Storm的任務拓撲並在Storm集群上運行。
流計算SQL引擎是流計算SQL的核心,主要負責對用戶SQL輸入進行語法分析、語義分析、邏輯計劃生成、邏輯計劃執行、物理執行計劃生成等操作。而真正執行計算的是底層的流計算平臺。
不同於離線任務,實時的數據是不斷流入的,所以為了使用SQL來對流處理進行抽象,流計算SQL也引入了“表”的概念,不過這裏的表是動態表。
流計算SQL的架構如下:
SQL層:流計算SQL給用戶的接口,它提供過濾、轉換、關聯、聚合、窗口、select、union、split等各種功能。
SQL引擎層:負責SQL解析/校驗、邏輯計劃生成優化和物理計劃執行等。
流計算引擎層:具體執行SQL引擎層生成的執行計劃。
大數據開發實戰:Stream SQL實時開發