在 Athena 中重复使用查询结果 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Athena 中重复使用查询结果

在 Athena 中重新运行查询时,可以选择重用上次存储的查询结果。此选项可以提高性能并降低扫描字节数方面的成本。重用查询结果非常有用,例如,如果您知道结果在指定时间范围内不会发生变化,则可以指定重用查询结果的最大期限。只要存储结果不超过指定期限,Athena 就会使用该结果。有关更多信息,请参阅 Amazon 大数据博客中的使用 Amazon Athena 降低成本并提高查询性能

主要 功能

当您为查询启用结果重用时,Athena 会在同一工作组中查找该查询的先前执行情况。如果 Athena 找到匹配项,它将绕过执行并返回上一个匹配执行的查询结果。您可以针对每个查询启用查询结果重用。

满足以下所有条件时,Athena 将重复使用上一次查询的结果:

  • 查询字符串匹配由 Athena 确定。

  • 数据库与目录名称匹配。

  • 先前的结果尚未过期。

  • 查询结果配置与上一次执行的查询结果配置相匹配。

  • 您可以访问查询中引用的所有表。

  • 您可以访问存储先前结果的 S3 文件位置。

如果不满足这些条件中的任何一个,Athena 将在不使用缓存结果的情况下运行查询。

注意事项和限制

使用查询结果重用功能时,请记住以下几点:

  • Athena 仅在同一工作组内重用查询结果。

  • 重用查询结果功能遵循工作组配置。如果您覆盖查询的结果配置,该功能将被禁用。

  • 仅支持在 Amazon S3 上生成结果集的查询。不支持 SELECTEXECUTE 以外的语句。

  • 支持向 Amazon Glue 注册 Apache Hive、Apache Hudi、Apache Iceberg 和 Linux Foundation Delta Lake 表。不支持外部 Hive 元存储。

  • 不支持引用联合目录或外部 Hive 元存储的查询。

  • Lake Formation 受管表不支持查询结果重用。

  • 在 Lake Formation 中将表源的 Amazon S3 位置注册为数据位置时,不支持重用查询结果。

  • 不支持具有行和列权限的表。

  • 不支持具有精细访问控制(例如,列或行筛选)的表。

  • 任何引用不支持的表的查询都不能重用查询结果。

  • Athena 要求您具有 Amazon S3 读取权限,以便重用先前生成的输出文件。

  • 重用查询结果功能假定先前结果的内容未被修改。Athena 在使用先前的结果之前,不会检查其完整性。

  • 如果先前执行的查询结果已被删除或移至 Amazon S3 中的其他位置,则随后执行的同一查询将不会重用查询结果。

  • 因而可能会返回过时的结果。在达到指定的最大重用期限之前,Athena 不会检查源数据是否更改。

  • 如果有多个结果可供重用,Athena 会使用最新的结果。

  • 使用非确定性运算符或函数(例如 rand()shuffle())的查询不使用缓存结果。例如,不包含 ORDER BYLIMIT 是不确定性的,因而不会缓存,但包含 ORDER BYLIMIT 是确定性的,所以会缓存。

  • 要将查询结果重用功能与 JDBC 结合使用,所需的最低驱动程序版本为 2.0.34.1000。对于 ODBC,所需的最低驱动程序版本为 1.1.19.1002。有关驱动程序下载信息,请参阅 通过 ODBC 和 JDBC 驱动程序连接到 Amazon Athena

  • 对于使用多个数据目录的查询,不支持查询结果重用。

  • 对于包含超过 20 个表的查询,不支持查询结果重用。

  • 对于小于 100 KB 的查询字符串,注释和空格之间的差异将被忽略,并且 INNER JOINJOIN 被视为等效项,以便重复使用结果。大于 100 KB 的查询字符串必须完全匹配才能重复使用结果。

  • 如果查询结果超出指定的最大期限,或未指定最大期限时超出 60 分钟的默认值,则查询结果被视为过期。可以指定重用查询结果的最大期限(以分钟、小时或天为单位)。无论使用何种时间单位,可指定的最大期限均为 7 天。

  • 不支持托管查询结果

如何在 Athena 控制台中重复使用查询结果

要使用该功能,请在 Athena 查询编辑器中启用 Reuse query results(重用查询结果)选项。

在 Athena 查询编辑器中启用 Reuse query results(重用查询结果)。
配置重用查询结果功能
  1. 在 Athena 查询编辑器中的 Reuse query results(重用查询结果)选项下,选择 up to 60 minutes ago(截至 60 分钟前)旁边的编辑图标。

  2. Edit reuse time(编辑重用时间)对话框中,从右侧的框中选择一个时间单位(分钟、小时或天)。

  3. 在左侧的框中,输入或选择要指定的时间单位数。无论选择何种时间单位,可输入的最大时间均为七天。

    配置重用查询结果的最大期限。
  4. 选择确认

    系统会显示一条横幅确认您的配置更改,同时 Reuse query results(重用查询结果)选项会显示新设置。