Amazon Athena

对 S3 上的数据执行标准 SQL 查询的无服务器分析服务,无需管理基础设施即可按量付费实现 PB 级数据分析

概述

Amazon Athena 是一项无服务器的交互式查询服务,可对存储在 S3 中的数据执行标准 SQL (基于 Trino / Presto) 查询。无需预置数据库或集群,只需对 S3 上的数据定义模式即可执行查询。支持 CSV、JSON、Parquet、ORC、Avro 等多种数据格式,并与 Glue Data Catalog 集成管理模式。费用基于扫描的数据量按量计费,每 TB 5 USD。使用 Parquet 或 ORC 等列式格式时,由于只扫描所需的列,可以大幅降低成本。

无服务器分析的工作原理

Athena 在每次执行查询时自动预置所需的计算资源,查询完成后释放。与 Redshift 不同,无需常驻运行集群,因此不执行查询的时段成本为零。查询执行引擎基于 Trino (原 Presto),通过分布式处理高速扫描大规模数据集。要最大化 Athena 的性能,数据的存储格式至关重要。CSV 和 JSON 是行式格式,即使只获取特定列也需要扫描整个文件。Parquet 和 ORC 是列式格式,只读取所需的列,因此扫描量大幅减少。此外,如果对数据进行分区 (年/月/日的目录结构),则只扫描与 WHERE 子句条件匹配的分区,成本和性能都会得到改善。

CloudTrail 日志与 VPC 流日志分析

Athena 最常见的应用场景是 AWS 日志分析。将 CloudTrail 日志投递到 S3 并用 Athena 查询,即可用 SQL 轻松提取特定用户的 API 调用历史、特定资源的访问模式、发生错误的 API 调用列表等。VPC 流日志同样可以投递到 S3 并用 Athena 分析,可以识别来自特定 IP 地址的通信模式、被拒绝的流量列表、数据传输量大的通信目标等。ALB 访问日志、S3 访问日志、CloudFront 访问日志也可以用 Athena 分析。在这些日志分析中,事先进行 Parquet 格式转换和分区分割,可以将查询成本降低 90% 以上。

实务活用模式

Athena 最适合数据湖上的即席分析。以 S3 作为数据湖,汇集来自各种来源的数据 (应用程序日志、IoT 数据、业务数据),用 Athena 进行跨源分析。使用 Glue ETL 作业将数据转换为 Parquet 格式,用 Glue Data Catalog 管理模式,用 Athena 查询——这是经典的流水线模式。与 QuickSight 联动后,可以将 Athena 的查询结果可视化为仪表板。Azure 的对应服务是 Azure Synapse Analytics 的无服务器 SQL 池,同样可以对 Azure Blob Storage 上的数据执行 SQL 查询。相关书籍 (Amazon) 可供从基础到应用系统学习 Athena。

共有するXB!