MSCK REPAIR TABLE を実行すると、Amazon Athena はパーティションのリストを返しますが、AWS Glue データカタログのテーブルにパーティションを追加できません。
簡単な説明
このエラーの一般的な動作は次のとおりです。
- AWS Identity and Access Management (IAM) ユーザーまたはロールに glue:BatchCreatePartition アクションを許可するポリシーがありません。
- Amazon Simple Storage Service (Amazon S3) のパスは、小文字ではなくキャメルケースです (例: userid ではなく userId)。
解決方法
IAM ポリシーで glue:BatchCreatePartition を許可します。
MSCK REPAIR TABLE を実行するのに使用しているユーザーまたはロールにアタッチされた IAM ポリシーを確認します。Athena で AWS Glue データカタログを使用する場合、IAM ポリシーにより glue:BatchCreatePartition アクションが許可される必要があります。ポリシーがそのアクションを許可しない場合、Athena はメタストアにパーティションを追加できません。glue:BatchCreatePartition アクションを許可する IAM ポリシーの例については、「AmazonAthenaFullAccess マネージドポリシー」を参照してください。
Amazon S3 パスを小文字に変更する
Amazon S3 パス名は小文字にする必要があります。パスがキャメルケースの場合、MSCK REPAIR TABLE はパーティションを AWS Glue データカタログに追加しません。例えば、Amazon S3 パスが userId の場合、次のパーティションは AWS Glue データカタログに追加されません。
- s3://awsdoc-example-bucket/path/userId=1/
- s3://awsdoc-example-bucket/path/userId=2/
- s3://awsdoc-example-bucket/path/userId=3/
この問題を解決するには、キャメルケースの代わりに小文字を使用します。
- s3://awsdoc-example-bucket/path/userid=1/
- s3://awsdoc-example-bucket/path/userid=2/
- s3://awsdoc-example-bucket/path/userid=3/
関連情報
Partitioning data in Athena (Athena でのデータのパーティショニング)
Amazon Athena のアクション、リソース、および条件キー
AWS Glue のアクション、リソース、および条件キー