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的一些简单介绍,由于篇幅有限,讲解的不太细致。
如果有任何疑问欢迎大家在评论区留言。
学习使人充实!!!最后祝大家都可以在大数据的海洋里随心遨游!
推荐阅读: