使用 Amazon Athena,您只需为您执行的查询付费。您需要按每个查询所扫描的数据量付费。通过对数据进行压缩、分区或将其转换为分列格式,您可以节省大量资金并能改善性能,因为其中每项操作均可以减少 Athena 执行查询所需扫描的数据量。

Amazon Athena 现已全面推出

开始使用 Amazon Athena
  • 扫描的数据 5 USD/TB。 

通过对数据进行压缩分区或将其转换为分列格式,每条查询可以节省 30% 至 90% 的成本并可获得更好的性能。

您需要按 Amazon Athena 扫描的字节数 (四舍五入至最接近的兆字节,每条查询至少 10MB) 付费。无需为数据定义语言 (DDL) 语句 (如 CREATE/ALTER/DROP TABLE)、管理分区的语句或失败的查询付费。取消的查询将按扫描的数据量收费。

对数据进行压缩可使 Athena 扫描较少的数据。将数据转换为分列格式可使 Athena 有选择性地只读取处理数据所需的列。Athena 支持 Apache ORC 和 Apache Parquet。对数据进行分区可使 Athena 限制扫描的数据量。上述做法不仅可以节省资金,还可以改善性能。您可以在 Athena 控制台中查看每条查询的扫描数据量。有关详情,请参阅 Athena 定价示例

Amazon Athena 直接从 Amazon S3 中查询数据。使用 Athena 查询数据无需额外支付存储费用。您将按标准 S3 费率支付存储、请求和数据传输费用。默认情况下,查询结果存储在您选择的 S3 存储桶中,也按标准 Amazon S3 费率计费。

如果您将 AWS Glue Data Catalog 与 Athena 结合使用,则需要按标准 AWS Glue Data Catalog 费率支付费用。有关详细信息,请单击此处

设想一个具有 3 个同样大小列的表,以未压缩的文本文件形式存储在 Amazon S3 上,总大小为 3TB。如果运行查询以从该表的一个列中获取数据,则需要 Amazon Athena 扫描整个文件,因为文本格式无法拆分。

  • 上述查询的费用为:15 USD。(所扫描的 3TB 数据的费用为:3 * 5 USD/TB = 15 USD)

如果使用 GZIP 将数据压缩,则可以得到 3:1 的压缩比。就本示例而言,您可以获得一个大小为 1TB 的压缩文件。针对此文件的相同查询的费用为 5 USD。Athena 仍需要扫描整个文件,但是由于文件大小缩小为原来的三分之一,因此您只需支付原来费用的三分之一即可。

如果您压缩文件并将其转换为分列格式 (如 Apache Parquet) 以实现 3:1 的压缩比,则您仍可以在 Amazon S3 上获得 1TB 大小的数据。但是,就本示例而言,由于 Parquet 是列式,因此 Amazon Athena 只能够读取与正在执行的查询相关的列。由于所谈到的查询仅参考一个列,因此 Athena 只需读取该列,而不必读取另外三分之二的文件。由于 Athena 只需读取三分之一的文件,因此它只需从 S3 扫描 0.33TB 的数据。

  • 上述查询的费用为:1.67 USD。压缩可将费用降低至原来的三分之一,只读取一个列也可将费用降低至原来的三分之一。
    (文件大小 = 3TB/3 = 1TB。读取一个列时扫描的数据 = 1TB/3 = 0.33TB。0.33TB 数据的费用 = 0.33 * 5 USD/TB = 1.67 USD)