Github squall 给出来的介绍是 An streaming / online query processing / analytics engine based on Apache Storm
Squall一个建立在storm之上的在线查询处理引擎,类似于Hive 提供批处理在Hadoop上的SQL语法,Squall在Storm上执行在线处理的SQL查询。
Squall支持广泛的一类SQL分析,从简单的聚合到更先进的UDF加入谓词和负载自适应调整。
它是由从EPFL DATA实验室几个贡献者积极开发的,正在不断发展,目前支持以下:
SQL(Select-Project-Join)查询处理连续数据流。
全面、完整的历史状态计算必要的近似查询处理,如在线聚集。
基于时间窗口的无限数据流的语义(正在进行中)。
Theta joins:复杂的连接谓词,包括不等式,band,和任意的UDF连接谓词。这给出了一个更全面的支持和灵活的数据分析。例如,Hive支持theta joins和响应用户的请求。
Continuous load balance and adaptation to data skew.(正在进行中)
吞吐率高达数百万元/秒和毫秒16机集群的延迟。可扩展的大型集群设置。
从核心处理:能有效运作有限的内存资源下通过高效的基于磁盘的数据结构和索引。
保证:至少一次或最多一次的语义。不支持一次语义,但它是计划。
弹性:缩放根据负载。(正在进行中)
Consider the following SQL query:
SELECT C_MKTSEGMENT, COUNT(O_ORDERKEY)
FROM CUSTOMER join ORDERS on C_CUSTKEY = O_CUSTKEY
GROUP BY C_MKTSEGMENT
我们提供几种方式运行查询:
1、squall的声明的接口(这是配备了基于成本的优化器)支持SQL直接查询。
2、Storm命令接口支持在线分布式查询计划(全码)如下:
Component customer = new DataSourceComponent("customer", conf)
.add(new ProjectOperator(0, 6));
Component orders = new DataSourceComponent("orders", conf)
.add(new ProjectOperator(1));
Component custOrders = new EquiJoinComponent(customer, 0, orders, 0)
.add(new AggregateCountOperator(conf).setGroupByColumns(1));
Detailed documentation can be found on the Squall wiki.