Presto与Spark SQL查询性能比较

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yiifaa/article/details/82788727

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远远甩在身后。

没有更多推荐了,返回首页