storm有沒有類SQL的實時查詢語言?
答案是肯定的,我這兩天剛好在做這個研究。
從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的一些簡單介紹,由於篇幅有限,講解的不太細緻。
如果有任何疑問歡迎大家在評論區留言。
學習使人充實!!!最後祝大家都可以在大數據的海洋里隨心遨遊!
推薦閱讀: