答案是肯定的,我這兩天剛好在做這個研究。

從storm 1.1.0開始,加入了storm sql功能,目前仍是experimental(實驗性) 功能。但經本人的實踐,目前已經能夠滿足大部分需求。

storm sq概述

Storm SQL 使用戶Storm 可以使用標準的sql語句實現複雜的拓撲功能,把kafka等輸入輸出數據源全部抽象為table,通過where條件作為bolt中的判斷條件,大大減少了用戶的學習使用成本,等到退出穩定版,必定成為流式處理的熱門應用

storm sql舉例

//創建 TABLE ORDERS對應於kafka的輸入spout

CREATE EXTERNAL TABLE ORDERS (ID INT PRIMARY KEY, UNIT_PRICE INT, QUANTITY INT)

LOCATION "kafka://localhost:2181/brokers?topic=orders"

//創建 TABLE LARGE_ORDERS 對應於kafka的輸出bolt

CREATE EXTERNAL TABLE LARGE_ORDERS (ID INT PRIMARY KEY, TOTAL INT)

LOCATION "kafka://localhost:2181/brokers?topic=large_orders"

TBLPROPERTIES "{"producer":{"bootstrap.servers":"localhost:9092","acks":"1","key.serializer":"org.apache.org.apache.storm.kafka.IntSerializer","value.serializer":"org.apache.org.apache.storm.kafka.ByteBufferSerializer"}}"

//使用 INSERT INTO ..SELECT... 語句,實現有條件的將輸入轉到輸出

INSERT INTO LARGE_ORDERS SELECT ID, UNIT_PRICE * QUANTITY AS TOTAL FROM ORDERS WHERE UNIT_PRICE * QUANTITY > 50

storm sq底層

在底層, StromSQL 把 SQL 編譯為 Trident 拓撲,在把Trident 流轉換為傳統的spout、bolt來執行

storm sql當前缺陷

不支持聚合和連接

不支持窗口函數

上述就是對storm sql的一些簡單介紹,由於篇幅有限,講解的不太細緻。

如果有任何疑問歡迎大家在評論區留言。

學習使人充實!!!最後祝大家都可以在大數據的海洋里隨心遨遊!


推薦閱讀:
相关文章