• <u id="qkpp5"></u>

    1. <p id="qkpp5"><nav id="qkpp5"><option id="qkpp5"></option></nav></p>
      <p id="qkpp5"><var id="qkpp5"></var></p>
    2. 玖玖av,国产成人精品777777,日韩无,成人亚洲精品一区二区三区嫩花,人妻2,好吊AV,内射网站,国产九九在线视频
      您現在的位置:智能制造網>技術中心>SreamCQL架構解析

      直播推薦

      更多>

      企業動態

      更多>

      推薦展會

      更多>

      SreamCQL架構解析

      2015年12月24日 14:10:10人氣:2358來源:

        StreamCQL是一個類SQL的聲明式語言,它用于在流(streams)和可更新關系(updatable relation)上的可持續查詢,目的是在流處理平臺分布式計算能力之上,通過使用簡易通用的類SQL語言,使得業務邏輯的開發變得統一和簡易。在功能上,StreamCQL彌補了傳統流處理平臺上一些基本業務功能的缺失,除了過濾、轉換等基本SQL能力之外, 還引入基于內存窗口的計算、統計、關聯等能力,以及流數據的拆分、合并等功能。

        StreamCQL重要概念介紹

        流:流是一組(無窮)元素的集合,流上的每個元素都屬于同一個schema;每個元素都和邏輯時間有關;即流包含了元組和時間的雙重屬性。流上的任何一個元素,都可以用Element<tuple, time="">的方式來表示,tuple是元組,包含了數據結構和數據內容,Time就是該數據的邏輯時間。

        Window:窗口(window)是流處理中解決事件的無邊界(unbounded)及流動性的一種重要手段,把事件流在某一時刻變成靜態的視圖,以便進行類似數據庫表的各種查詢操作。在stream上可以定義window,窗口有兩種類型,時間窗口(time-based)和記錄窗口(row-based)。兩種窗口都支持兩種模式,滑動(slide)和跳動(tumble)。

        算子:算子是包含了一系列運算關系的組合,比如聚合算子,就包含了查詢(select),窗口,聚合(aggregate),排序(sort),窗口前過濾(filter before window),窗口之后的過濾(where),聚合之后的過濾(having)等功能,除此之外,還有流拆分算子,流合并算子等。StreamCQL中的算子分為三類:輸入算子、輸出算子、功能算子。

        StreamCQL架構介紹

        StreamCQL總體架構如下圖所示:

        

       

        圖1 StreamCQL架構圖

        StreamCQL的總體架構分為引擎、功能、業務接口三層,每隔層次之間分工明確,責任清晰,可以輕易進行功能拓展。

        1. 引擎

        StreamCQL的引擎層,可以適配各種不同的流處理引擎,比如Flink等,目前主要適配Storm。

        引擎層的作用在于完成完成對各類算子對底層不同流處理引擎的接口適配、拓撲的構建、提交查看刪除等操作。

        以Storm適配為例,在Storm中,對外接口分為Spout和Bolt,其中,Spout就對應輸入算子,Bolt對應輸出算子和功能算子;StreamCQL中所有操作是以算子為單位的,各類運算都發生在不同的算子內部。算子分為輸入算子、輸出算子和功能算子,在Storm適配層中,就包含輸入算子對Spout的適配,輸出算子和功能算子對Bolt的適配,以及emit的適配,topology builder的適配。只要通過幾百行代碼就可以完成對Storm引擎的適配工作。

        StreamCQL引擎層和Streaming的對外接口如下圖所示:

        

       

        圖2 StreamCQL底層解耦架構

        StreamCQL在Storm自身的IRichSpout,IRichBolt接口基礎上,實現了StormSpout、StormBolt和StormOutputBolt來屏蔽底層不同引擎帶來的接口變更。

        StreamApapter是一個適配器,主要作用就是將Streaming算子注入到Spout和Bolt中。

        IInputStreamOperator、IFunctionStreamOperator和IOutputStreamOperator是所有的輸入輸出和功能性算子的接口,同用戶自定義接口一致。

        該架構使用依賴注入的原則,實現了各個每個層級算子之間的解耦。

        2. 功能

        功能層以Stream和Window為基礎,構建出了Join,Aggregate等算子。

        Stream即流,該功能構建出了整個流處理平臺數據流的基礎。定義了數據流動、解析和分發規則。

        Window:window是流上一段時間內數據的集合。StreamCQL上絕大部分的計算,都是基于窗口的。

        流和窗口構成了整個流處理平臺的核心。

        StreamCQL功能層的算子包含Join算子、Aggregate算子、Split算子、Merge算子、Functor算子、filter算子、union算子、輸入算子和輸出算子,模式匹配算子目前暫時沒有實現。

        Join算子提供的功能類似關系型數據庫的Join功能。目前StreamCQL支持的Join類型包含Inner Join,Left (outer) Join,Right (outer) Join,Full (outer) Join ,Cross Join四種類型。目前只支持雙流Join。由于流的特殊性,Join的時候,兩個流的數據都是在不斷發生變化的,所以兩個流任何一個流的數據變化,都會觸發Join操作。如果只想讓某個流觸發Join,那么就應該使用UNIDIRECTION關鍵字。

        

       

        圖3 雙流Join示例

        下表時當有數據流動的時候,雙向Join的輸出舉例。

        

       

        圖4 雙流Join結果示例

        

       

        圖5 雙流Join單流觸發Join示例

        

       

        圖6 雙流Join單流觸發Join數據示例

        Filter算子適合只有單純數據過濾的簡單場景,不支持任何其他列轉換運算,不支持窗口。

        Functor算子在Filter算子的基礎上 添加了列轉換運算,支持Select子句運算。

        Aggregate算子是一個大而全的算子,在Functor的基礎上,添加了窗口功能,并支持分組,聚合,窗口前過濾,窗口后過濾,聚合后過濾(having),排序功能。

        

       

        圖7 aggregate聚合算子內部關系說明

        Split算子的主要作用在于完成單個流到多個流的拆分,支持每個流輸出不同數據。

        

       

        圖8 Split算子示例

        

       

        圖9 Split算子輸出舉例

        Merge算子作用正好和Split算子相反,支持多流到單個流的合并。Merge算子要求每個流都有一個字段和其他流中的一個字段匹配,這樣才會合并做同一條數據。類似關系型數據庫中的多留等值Join。

        

       

        圖10 Merge算子示例

        

       

        圖11 Merge算子數據輸出示例

        Union算子在CQL語法層面不支持,但是在CQL內部,會自動將滿足條件的算子優化為Union算子。Union算子不支持任何過濾查詢運算,只是簡單進行流合并。

        Input和output算子是單純的輸入和輸出算子,其中包含數據的讀取,寫入,序列化、反序列化功能。

        3. 業務接口

        StreamCQL的業務接口構建在Storm所有功能之上,分為CQL和IDE,其中IDE指的是類似Eclipse的開發IDE,這種IDE以功能層各類算子和窗口為基礎,可以很容易進行拖拉拽等流拓撲開發;IDE功能目前還沒有實現。

        CQL指的是CQL的語法,包含語法定義,語法解析,語義分析,流抽象拓撲構建等功能。CQL對StreamCQL對外功能展示的入口。相關CQL語法設計和對外拓展接口可以在Github上查看語法手冊。

      全年征稿/資訊合作 聯系郵箱:1271141964@qq.com

      免責聲明

      • 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://m.zgjming.com。違反者本網將追究相關法律責任。
      • 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
      • 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
      • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。

      <
      更多 >

      工控網機器人儀器儀表物聯網3D打印工業軟件金屬加工機械包裝機械印刷機械農業機械食品加工設備制藥設備倉儲物流環保設備造紙機械工程機械紡織機械化工設備電子加工設備水泥設備海洋水利裝備礦冶設備新能源設備服裝機械印染機械制鞋機械玻璃機械陶瓷設備橡塑設備船舶設備電子元器件電氣設備


      我要投稿
      • 投稿請發送郵件至:(郵件標題請備注“投稿”)1271141964.qq.com
      • 聯系電話0571-89719789
      工業4.0時代智能制造領域“互聯網+”服務平臺
      智能制造網APP

      功能豐富 實時交流

      智能制造網小程序

      訂閱獲取更多服務

      微信公眾號

      關注我們

      抖音

      智能制造網

      抖音號:gkzhan

      打開抖音 搜索頁掃一掃

      視頻號

      智能制造網

      公眾號:智能制造網

      打開微信掃碼關注視頻號

      快手

      智能制造網

      快手ID:gkzhan2006

      打開快手 掃一掃關注
      意見反饋
      關閉
      企業未開通此功能
      詳詢客服 : 0571-87858618