2017-03-28 82 views
0

我已经以这种格式分区存储在S3中的数据。如何提高从雅典娜s3数据的查询性能

bucket/year=2017/month=3/date=1/filename.json 
bucket/year=2017/month=3/date=2/filename1.json 
bucket/year=2017/month=3/date=3/filename2.json 

每个分区都有大约1,000,000条记录。我在雅典娜为此创建了表格和分区。

现在从雅典娜

select count(*) from mts_data_1 where year='2017' and month='3' and date='1' 

运行的查询此查询正在1800秒扫描1,000,000记录时,。

所以我的问题是如何改善这种查询性能?

+0

什么是分区列的定义? –

+0

PARTITIONED BY(年份字符串,月份字符串,日期字符串) – Shailendra

+0

Athena在该查询中扫描了多少个文件和字节的数据? – James

回答

1

我认为问题在于雅典娜必须从S3读取如此多的文件。 250 MB并不是那么多的数据,但1,000,000个文件是很多文件。如果减少文件数量,Athena查询性能将显着提高,压缩聚合文件将有助于提高性能。一天的分区需要多少个文件?即使采用一分钟的分辨率,您也需要少于1,500个文件。如果当前查询时间大约是30分钟,那么您可以轻松开始。

有用于聚集和压缩您的记录很多选项: