1. 程式人生 > >大數據開發實戰:Stream SQL實時開發

大數據開發實戰:Stream SQL實時開發

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實時開發