使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何解决在 Amazon Athena 中运行时间过长或超时的 MSCK REPAIR TABLE 命令?

1 分钟阅读
0

我想解决一个在 Amazon Athena 中运行时间过长或超时的 MSCK REPAIR TABLE 命令。

简短描述

当您运行 MSCK REPAIR TABLE 命令时,Athena 会在 Amazon Simple Storage Service(Amazon S3)中列出前缀和对象。如果 Amazon S3 前缀或对象过多,则该命令需要很长时间才能运行或超时并出现错误。

要解决此问题,请使用下面其中一种方法:

  • 使用 Athena 分区投影。
  • 使用 AWS Glue 爬网程序将分区添加到您的 Athena 表中。
  • 使用 Athena DDL 语句加载分区

解决方法

使用 Athena 分区投影

使用 Athena 分区投影在内存中生成分区。无需将分区添加到 AWS Glue Data Catalog 或从 Data Catalog 中检索它们。Athena 计算表的值,而不是扫描大量分区。此外,分区投影根据配置而不是从 AWS Glue Data Catalog 等存储库计算值和位置。

使用 AWS Glue 爬网程序向 Athena 表添加分区

要使用 AWS Glue 爬网程序向 Athena 表添加分区,请完成以下步骤:

  1. 打开 AWS Glue 控制台
  2. 在导航窗格上,选择爬网程序,然后选择创建爬网程序
  3. 为爬网程序创建名称,然后选择下一步
  4. 选择数据源和分类器下,在数据源配置下,为您的数据是否已映射到 Glue 表?选择
  5. Glue 表下,选择添加表,然后选择所需的数据库和表。选择下一步
  6. 为 AWS Glue 选择或创建 IAM 角色。选择下一步
  7. 设置输出和计划下,展开高级选项,然后选择以下选项:
    忽略更改,不要更新 Data Catalog 中的表。
    使用表中的元数据更新所有新分区和现有分区。
    忽略更改,不要更新 Data Catalog 中的表。
  8. 选择下一步,然后选择创建爬网程序以保存爬网程序配置。
  9. 选择运行爬网程序。当您运行爬网程序时,分区将加载到表中。

有关更多信息,请参阅 How crawlers workIncremental crawls for adding new partitions in AWS Glue

使用 Athena DDL 语句加载分区

要使用 Athena DDL 语句加载分区,请完成下面的步骤:

  1. 打开 Amazon Athena 控制台
  2. 查询编辑器选项卡上,运行 ALTER TABLE ADD PARTITION 命令来加载分区。

相关信息

为什么我的 Athena 查询运行时间很长?

Creating tables, updating schema, and adding new partitions in the Data Catalog from AWS Glue ETL jobs

AWS Glue 定价

AWS 官方
AWS 官方已更新 1 年前