【问题标题】:How to improve query performance to s3 data from Athena如何提高对来自 Athena 的 s3 数据的查询性能
【发布时间】:2017-03-28 11:35:40
【问题描述】:

我已将存储在 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 条记录。为此,我在 Athena 中创建了表和分区。

现在从 Athena 运行查询

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

此查询需要 1800 秒来扫描 1,000,000 条记录。

所以我的问题是如何提高查询性能?

【问题讨论】:

  • 分区列的定义是什么?
  • PARTITIONED BY(年份字符串、月份字符串、日期字符串)
  • Athena 在该查询中扫描了多少文件和数据字节?
  • 它扫描大约 1000k 文件(大约 250MB 数据)。每个文件都有一个 JSON 记录。

标签: amazon-s3 hive amazon-athena


【解决方案1】:

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

有许多选项可用于汇总和压缩您的记录:

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多