我已经按日期对数据进行了分区,下面是它在s3中的存储方式。
s3://dataset/date=2018-04-01
s3://dataset/date=2018-04-02
s3://dataset/date=2018-04-03
s3://dataset/date=2018-04-04
...
在此基础上创建了配置单元外部表。我正在执行这个查询,
select count(*) from dataset where `date` ='2018-04-02'
这个分区有两个这样的Parquet文件,
part1 -xxxx- .snappy.parquet
part2 -xxxx- .snappy.parquet
每个文件大小 297MB.
,所以没有一个大的文件,也没有太多要扫描的文件。
查询正在返回 12201724
记录。然而,返回这个结果需要3.5分钟,因为一个分区本身也需要这段时间,即使对整个数据集(7年)运行count查询也需要数小时才能返回结果。不管怎样,我能加快速度吗?
1条答案
按热度按时间gijlo24d1#
amazon athena实际上是一个托管的presto服务。它可以查询存储在amazons3中的数据,而不必运行任何集群。
它是根据从磁盘读取的数据量收费的,因此在使用分区和Parquet文件时,它的运行效率非常高。
参见:使用amazon athena分析s3中的数据| aws大数据博客