我们计划在S3中使用雅典娜作为数据的后端服务(存储在分区中的拼花文件)。
我们感兴趣的一些事情是在查询的where子句中添加额外的列如何影响查询运行时。例如,我们在一个单元分区中有1000万条记录(基于列‘date’的分区)
下面的所有查询都返回相同的卷-1,000万。当我们在where子句中添加额外的列时(因为parquet是列fomar),所有这些查询会占用相同的时间还是会减少查询的运行?我试着测试这个,但是结果不一致,因为我想也有一些排队时间。
select * from table where date='20200712'
select * from table where date='20200712' and type='XXX'
select * from table where date='20200712' and type='XXX' and subtype='YYY'
发布于 2020-07-13 08:13:28
拼花文件包含页面“索引”(最小、最大和布卢姆过滤器)。例如,如果在insert期间按有问题的列对数据进行排序,例如:
insert overwrite table mytable partition (dt)
select col1, --some columns
type,
subtype,
dt
distribute by dt
sort by type, subtype
然后,这些索引可以有效地工作,因为数据具有相同的类型,子类型将加载到相同的页面中,数据页将使用索引进行选择。参见这里的一些基准测试:https://blog.cloudera.com/speeding-up-select-queries-with-parquet-page-indexes/
https://stackoverflow.com/questions/62870653
复制相似问题