天天看點

squall的介紹

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.