大数据Presto(五):Presto优化与Impala对比
【摘要】 Presto优化与Impala对比一、Presto优化1、数据存储一般Presto与Hive整合使用,针对这种使用情况有如下几点优化建议:合理设置分区合理设置分区在读取数据时可以针对分区数据读取,可以减少Presto数据读取量,提升查询性能。使用列式存储Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相...
Presto优化与Impala对比
一、Presto优化
1、数据存储
一般Presto与Hive整合使用,针对这种使用情况有如下几点优化建议:
- 合理设置分区
合理设置分区在读取数据时可以针对分区数据读取,可以减少Presto数据读取量,提升查询性能。
- 使用列式存储
Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。
- 使用压缩
数据压缩可以减少节点间数据传输对IO带宽压力,对于即席查询需要快速解压,建议采用Snappy压缩。
2、查询优化
- 只查询必要的字段
由于采用列式存储,查询时指定字段进行查询分析,减少读取数据量,避免使用“*”查询。
- 过滤条件加上分区字段
这样可以减少全表扫描,加快查询速度。
- Group By 语句优化
合理安排Group by语句中字段顺序对性能有一定提升。将Group By语句中字段按照每个字段distinct数据多少进行降序排列。
[GOOD]: SELECT col1,clo2 from tbl GROUP BY uid, gender
[BAD]: SELECT col1,clo2 from tbl GROUP BY gender, uid
- Order By时使用Limit
Order by需要扫描数据到单个worker节点进行排序,导致单个worker需要大量内存。如果是查询TopN或者BottomN,使用limit可减少排序计算和内存压力。
- 使用Join语句时将大表放在左边
使用Join语句时将大表放在左边Presto中join的默认算法是broadcast join,即将join左边的表分割到多个worker,然后将join右边的表数据整个复制一份发送到每个worker进行计算。如果右边的表数据量太大,则可能会报内存溢出错误。
二、Presto与Impala对比
Impala性能比Presto相对来说要快一些,两者都对内存消耗比较大,虽然Impala速度快但是Presto支持的数据源丰富。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)