1. 程式人生 > >Presto與Spark SQL查詢效能比較

Presto與Spark SQL查詢效能比較

1. 數倉環境

指標名稱 指標值
資料總量 24T
分割槽數量 24
儲存型別 Text
Spark SQL版本 2.2.0-218
Pres同版本 Presto CLI 04fb3c3-dirty

2. 分頁查詢

所有的計算時間都以秒為單位,執行的SQL語句如下:

select * from mydb where year='2018' and month='09' and day='09' and remote_addr='117.136.68.11' and host like '%poi%'  limit 10;
執行環境 limit 10 limit 100 limit 200
Presto 2 23 42
Spark SQL 34.08 237.395 120
Hive 4413 忽略 忽略

另外,我注意到Presto自帶分頁功能,所以在執行查詢命令時感覺更快,幾乎就是剛輸入命令,結果就呈現出來了,互動性領先。

3. 全量結果

相對於分頁查詢,這次去掉了limit限制,以及增加了計數查詢,如下:

#   測試1
select * from mydb where year='2018' and month='09' and day='09' and remote_addr='117.136.68.11' and host like '%poi%'
; # 測試2 select count(*) from mydb where year='2018' and month='09' and day='09' and remote_addr='117.136.68.11' and host like '%poi%';

執行結果,如下表所示:

執行環境 全量資料
Presto 2080
Spark SQL 661.493

4. 其他

相比於Spark SQL,Presto有著更快的啟動時間。

相比於Presto,Spark SQL更容易指定執行節點的數量,速度提升更容易,下表是Spark SQL節點數量的速度變化情況。

 spark-sql --num-executors 10
節點數量 執行時間
100 661.493
24 662.734
10 625.403

從上表可以看出,Spark SQL所需的執行節點應儘可能與分割槽數量相等(正在做進一步詳盡的測試,請稍等),再多也只是資源浪費。

跟Presto相比,Spark SQL即使在執行節點數量相等時(10個),Spark SQL的速度也大幅領先。

5. 結論

在執行分頁查詢時,Presto具有明顯的優勢,但需要全量資料與統計時,Spark SQL則將Presto遠遠甩在身後。