我按日期对数据进行了分区,这是它在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
...
在此基础上创建了hive外部表。我正在执行此查询,
select count(*) from dataset where `date` ='2018-04-02'
这个分区有两个这样的拼花文件,
part1 -xxxx- .snappy.parquet
part2 -xxxx- .snappy.parquet
每个文件大小为297MB.
,因此不是一个大文件,也不是很多要扫描的文件。
查询返回12201724
条记录。然而,返回此需要3.5分钟,因为一个分区本身需要这个时间,即使对整个数据集(7年)的数据进行计数查询也需要数小时才能返回结果。无论如何,我可以加快这个吗?
答案 0 :(得分:0)
亚马逊雅典娜实际上是托管的Presto服务。它可以查询存储在Amazon S3中的数据,而无需运行任何集群。
根据从磁盘读取的数据量收费,因此在使用分区和镶木地板文件时它会非常有效地运行。
请参阅:Analyzing Data in S3 using Amazon Athena | AWS Big Data Blog