答案是肯定的,我这两天刚好在做这个研究。

从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的一些简单介绍,由于篇幅有限,讲解的不太细致。

如果有任何疑问欢迎大家在评论区留言。

学习使人充实!!!最后祝大家都可以在大数据的海洋里随心遨游!


推荐阅读:
相关文章