MSCK REPAIR TABLE - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

MSCK REPAIR TABLE

恢复 Hive 兼容的分区以及与这些分区关联的数据。在向目录添加分区时,请使用此语句。例如,创建具有分区的表后,对此表运行 MSCK REPAIR TABLE 语句以刷新分区元数据。这使您可以从 Athena 中查询数据。

添加所有分区可能需要一些时间。如果此操作超时,它将处于不完整的状态,其中只有少数分区会被添加到目录中。应在同一个表上运行该语句,直到添加所有分区。有关更多信息,请参阅分区数据

注意

对于不兼容 Hive 的分区,请使用ALTER TABLE ADD PARTITION加载分区,以便您可以查询数据。

摘要

MSCK REPAIR TABLE table_name

示例

MSCK REPAIR TABLE orders;

问题排查

运行 MSCK REPAIR TABLE 后,如果 Athena 未将分区添加到 AWS Glue 数据目录 中的表,请检查以下内容:

  • 确保 AWS Identity and Access Management (IAM) 用户或角色具有允许执行 glue:BatchCreatePartition 操作的策略。

  • 确保 Amazon S3 路径为小写而不是驼峰式大小写(例如, userid 而不是 userId)。

以下各节提供了更多信息。

在 IAM 策略中允许 glue:BatchCreatePartition

审核附加到您用于执行 MSCK REPAIR TABLE 的用户或角色的 IAM 策略。当您将 AWS Glue Data Catalog 与 Athena 一起使用时,IAM 策略必须允许 glue:BatchCreatePartition 操作。有关允许 glue:BatchCreatePartition 操作的 IAM 策略的示例,请参阅 AmazonAthenaFullAccess 托管策略

将 Amazon S3 路径更改为小写

Amazon S3 路径必须为小写。如果 S3 路径为驼峰式大小写,则 MSCK REPAIR TABLE 不会将分区添加到 AWS Glue 数据目录。例如,如果您的 S3 路径为 userId,则不会将以下分区添加到 AWS Glue 数据目录:

s3://bucket/path/userId=1/ s3://bucket/path/userId=2/ s3://bucket/path/userId=3/

要解决此问题,请使用全大写或全小写而不是驼峰式大小写:

s3://bucket/path/userid=1/ s3://bucket/path/userid=2/ s3://bucket/path/userid=3/