直播推薦
企業(yè)動態(tài)
- 會后報道 | 世界級制造WCM與工業(yè)4.0創(chuàng)新大會暨頒獎盛典新聞動態(tài)
- 東莞皓天交付隔爆試驗箱,助力廣東電子科技企業(yè)品質(zhì)升級
- SNEC 2025大秦數(shù)能兩類新品連發(fā),以“智慧儲能”助推能源轉(zhuǎn)型
- 藍芯科技即將亮相泰國NEPCON Thailand 2025
- 漢達森攜手瑞典AQ邀您共聚CPHI China 2025
- 歐姆龍亮相SNEC 2025:助推新能源產(chǎn)業(yè)加速升級,為零碳未來蓄能
- 東莞市皓天試驗設(shè)備有限公司召開線上技術(shù)會議 凝聚智慧共促技術(shù)升級
- 天津市投資促進局、天津市建設(shè)銀行一行到訪國聯(lián)股份肥多多
推薦展會
StreamCQL是一個類SQL的聲明式語言,它用于在流(streams)和可更新關(guān)系(updatable relation)上的可持續(xù)查詢,目的是在流處理平臺分布式計算能力之上,通過使用簡易通用的類SQL語言,使得業(yè)務(wù)邏輯的開發(fā)變得統(tǒng)一和簡易。在功能上,StreamCQL彌補了傳統(tǒng)流處理平臺上一些基本業(yè)務(wù)功能的缺失,除了過濾、轉(zhuǎn)換等基本SQL能力之外, 還引入基于內(nèi)存窗口的計算、統(tǒng)計、關(guān)聯(lián)等能力,以及流數(shù)據(jù)的拆分、合并等功能。
StreamCQL重要概念介紹
流:流是一組(無窮)元素的集合,流上的每個元素都屬于同一個schema;每個元素都和邏輯時間有關(guān);即流包含了元組和時間的雙重屬性。流上的任何一個元素,都可以用Element<tuple, time="">的方式來表示,tuple是元組,包含了數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)內(nèi)容,Time就是該數(shù)據(jù)的邏輯時間。
Window:窗口(window)是流處理中解決事件的無邊界(unbounded)及流動性的一種重要手段,把事件流在某一時刻變成靜態(tài)的視圖,以便進行類似數(shù)據(jù)庫表的各種查詢操作。在stream上可以定義window,窗口有兩種類型,時間窗口(time-based)和記錄窗口(row-based)。兩種窗口都支持兩種模式,滑動(slide)和跳動(tumble)。
算子:算子是包含了一系列運算關(guān)系的組合,比如聚合算子,就包含了查詢(select),窗口,聚合(aggregate),排序(sort),窗口前過濾(filter before window),窗口之后的過濾(where),聚合之后的過濾(having)等功能,除此之外,還有流拆分算子,流合并算子等。StreamCQL中的算子分為三類:輸入算子、輸出算子、功能算子。
StreamCQL架構(gòu)介紹
StreamCQL總體架構(gòu)如下圖所示:

圖1 StreamCQL架構(gòu)圖
StreamCQL的總體架構(gòu)分為引擎、功能、業(yè)務(wù)接口三層,每隔層次之間分工明確,責(zé)任清晰,可以輕易進行功能拓展。
1. 引擎
StreamCQL的引擎層,可以適配各種不同的流處理引擎,比如Flink等,目前主要適配Storm。
引擎層的作用在于完成完成對各類算子對底層不同流處理引擎的接口適配、拓撲的構(gòu)建、提交查看刪除等操作。
以Storm適配為例,在Storm中,對外接口分為Spout和Bolt,其中,Spout就對應(yīng)輸入算子,Bolt對應(yīng)輸出算子和功能算子;StreamCQL中所有操作是以算子為單位的,各類運算都發(fā)生在不同的算子內(nèi)部。算子分為輸入算子、輸出算子和功能算子,在Storm適配層中,就包含輸入算子對Spout的適配,輸出算子和功能算子對Bolt的適配,以及emit的適配,topology builder的適配。只要通過幾百行代碼就可以完成對Storm引擎的適配工作。
StreamCQL引擎層和Streaming的對外接口如下圖所示:

圖2 StreamCQL底層解耦架構(gòu)
StreamCQL在Storm自身的IRichSpout,IRichBolt接口基礎(chǔ)上,實現(xiàn)了StormSpout、StormBolt和StormOutputBolt來屏蔽底層不同引擎帶來的接口變更。
StreamApapter是一個適配器,主要作用就是將Streaming算子注入到Spout和Bolt中。
IInputStreamOperator、IFunctionStreamOperator和IOutputStreamOperator是所有的輸入輸出和功能性算子的接口,同用戶自定義接口一致。
該架構(gòu)使用依賴注入的原則,實現(xiàn)了各個每個層級算子之間的解耦。
2. 功能
功能層以Stream和Window為基礎(chǔ),構(gòu)建出了Join,Aggregate等算子。
Stream即流,該功能構(gòu)建出了整個流處理平臺數(shù)據(jù)流的基礎(chǔ)。定義了數(shù)據(jù)流動、解析和分發(fā)規(guī)則。
Window:window是流上一段時間內(nèi)數(shù)據(jù)的集合。StreamCQL上絕大部分的計算,都是基于窗口的。
流和窗口構(gòu)成了整個流處理平臺的核心。
StreamCQL功能層的算子包含Join算子、Aggregate算子、Split算子、Merge算子、Functor算子、filter算子、union算子、輸入算子和輸出算子,模式匹配算子目前暫時沒有實現(xiàn)。
Join算子提供的功能類似關(guān)系型數(shù)據(jù)庫的Join功能。目前StreamCQL支持的Join類型包含Inner Join,Left (outer) Join,Right (outer) Join,F(xiàn)ull (outer) Join ,Cross Join四種類型。目前只支持雙流Join。由于流的特殊性,Join的時候,兩個流的數(shù)據(jù)都是在不斷發(fā)生變化的,所以兩個流任何一個流的數(shù)據(jù)變化,都會觸發(fā)Join操作。如果只想讓某個流觸發(fā)Join,那么就應(yīng)該使用UNIDIRECTION關(guān)鍵字。

圖3 雙流Join示例
下表時當(dāng)有數(shù)據(jù)流動的時候,雙向Join的輸出舉例。

圖4 雙流Join結(jié)果示例

圖5 雙流Join單流觸發(fā)Join示例

圖6 雙流Join單流觸發(fā)Join數(shù)據(jù)示例
Filter算子適合只有單純數(shù)據(jù)過濾的簡單場景,不支持任何其他列轉(zhuǎn)換運算,不支持窗口。
Functor算子在Filter算子的基礎(chǔ)上 添加了列轉(zhuǎn)換運算,支持Select子句運算。
Aggregate算子是一個大而全的算子,在Functor的基礎(chǔ)上,添加了窗口功能,并支持分組,聚合,窗口前過濾,窗口后過濾,聚合后過濾(having),排序功能。

圖7 aggregate聚合算子內(nèi)部關(guān)系說明
Split算子的主要作用在于完成單個流到多個流的拆分,支持每個流輸出不同數(shù)據(jù)。

圖8 Split算子示例

圖9 Split算子輸出舉例
Merge算子作用正好和Split算子相反,支持多流到單個流的合并。Merge算子要求每個流都有一個字段和其他流中的一個字段匹配,這樣才會合并做同一條數(shù)據(jù)。類似關(guān)系型數(shù)據(jù)庫中的多留等值Join。

圖10 Merge算子示例

圖11 Merge算子數(shù)據(jù)輸出示例
Union算子在CQL語法層面不支持,但是在CQL內(nèi)部,會自動將滿足條件的算子優(yōu)化為Union算子。Union算子不支持任何過濾查詢運算,只是簡單進行流合并。
Input和output算子是單純的輸入和輸出算子,其中包含數(shù)據(jù)的讀取,寫入,序列化、反序列化功能。
3. 業(yè)務(wù)接口
StreamCQL的業(yè)務(wù)接口構(gòu)建在Storm所有功能之上,分為CQL和IDE,其中IDE指的是類似Eclipse的開發(fā)IDE,這種IDE以功能層各類算子和窗口為基礎(chǔ),可以很容易進行拖拉拽等流拓撲開發(fā);IDE功能目前還沒有實現(xiàn)。
CQL指的是CQL的語法,包含語法定義,語法解析,語義分析,流抽象拓撲構(gòu)建等功能。CQL對StreamCQL對外功能展示的入口。相關(guān)CQL語法設(shè)計和對外拓展接口可以在Github上查看語法手冊。
免責(zé)聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.caslcampaign.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
2025中國鄭州衡器與計量技術(shù)設(shè)備展覽會
展會城市:鄭州市展會時間:2025-11-07