s3 分区上的 Hive 查询太慢

Hive query on s3 partition is too slow

我已经按日期对数据进行了分区,下面是它在 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
...

在此之上创建外部配置单元 table。我正在执行此查询,

select count(*) from dataset where `date` ='2018-04-02' 

这个分区有两个这样的parquet文件,

part1 -xxxx- .snappy.parquet
part2 -xxxx- .snappy.parquet

每个文件的大小是 297MB. ,所以文件不是很大,要扫描的文件也不多。

并且查询是 returning 12201724 条记录。然而 return 这需要 3.5 分钟,因为一个分区本身正在占用这段时间,运行 即使对整个数据集(7 年)数据的计数查询也需要数小时才能 return 结果.无论如何,我可以加快速度吗?

Amazon Athena 实际上是一种托管的 Presto 服务。它可以查询存储在 Amazon S3 中的数据,而无需 运行 任何集群。

它根据从磁盘读取的数据量收费,因此在使用分区和 parquet 文件时运行效率很高。

参见:Analyzing Data in S3 using Amazon Athena | AWS Big Data Blog