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