MSCK REPAIR TABLE - Amazon Athena

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

MSCK REPAIR TABLE

Hive 호환 파티션을 추가하거나 제거한 후 MSCK REPAIR TABLE 명령을 사용하여 카탈로그의 메타데이터를 업데이트합니다.

MSCK REPAIR TABLE 명령은 테이블을 생성한 후 파일 시스템에 추가되거나 파일 시스템에서 제거된 Hive 호환 파티션을 Amazon S3와 같은 파일 시스템에서 스캔합니다. 이 명령은 파티션 및 파티션과 연결된 데이터와 관련하여 카탈로그의 메타데이터를 업데이트합니다.

파티션을 추가하거나 제거하면 카탈로그의 메타데이터가 파일 시스템의 데이터 레이아웃과 일치하지 않게 됩니다. 예를 들어 파티션이 있는 테이블을 생성한 후에는 새 파티션에 대한 정보를 카탈로그에 추가해야 합니다. 메타데이터를 업데이트하려면 테이블에서 MSCK REPAIR TABLE을 실행합니다. 이를 통해 Athena에서 새 파티션의 데이터를 쿼리할 수 있습니다.

고려 사항 및 제한

MSCK REPAIR TABLE을 사용할 때는 다음 사항에 유의하십시오.

  • 모든 파티션을 추가하려면 다소 시간이 걸릴 수 있습니다. 이 작업의 시간이 초과되면 카탈로그에 몇 개의 파티션만 추가되는 불완전한 상태가 됩니다. 모든 파티션이 추가될 때까지 동일한 테이블에서 MSCK REPAIR TABLE을 실행해야 합니다. 자세한 내용은 데이터 파티셔닝을 참조하십시오.

  • Hive와 호환되지 않는 파티션의 경우 데이터를 쿼리할 수 있도록 파티션을 로드하려면 ALTER TABLE ADD PARTITION을 사용합니다.

  • Athena에서 사용할 파티션 위치는 s3 프로토콜(예: s3://bucket/folder/)을 사용해야 합니다. Athena에서, 다른 프로토콜(예: s3a://bucket/folder/)을 사용하는 위치는 포함 테이블에서 MSCK REPAIR TABLE 쿼리를 실행할 때 쿼리 실패를 초래하게 됩니다.

Synopsis

MSCK REPAIR TABLE table_name

Examples

MSCK REPAIR TABLE orders;

Troubleshooting

MSCK REPARE TABLE을 실행한 후 Athena가 AWS Glue 데이터 카탈로그의 테이블에 파티션을 추가하지 않으면 다음을 확인하십시오.

  • AWS Identity and Access Management(IAM) 사용자 또는 역할에 glue:BatchCreatePartition 작업을 허용하는 정책이 있는지 확인합니다.

  • 반드시 IAM 사용자 또는 역할에 액세스 권한이 있는 정책이 있음 Amazon S3, 포함 s3:DescribeJob 작업. 예를 들어 Amazon S3 허용 가능한 작업, 의 버킷 정책 예제 참조 Athena에서 Amazon S3 버킷에 대한 교차 계정 액세스.

  • Amazon S3 경로가 camel 표기 대신 소문자인지 확인합니다(예: userId 대신 userid).

다음 섹션에서는 몇 가지 추가 세부 정보를 제공합니다.

IAM 정책에 glue:BatchCreatePartition을 허용

검토 IAM 사용자 또는 역할에 연결된 정책 MSCK REPAIR TABLE. 여러분이 AWS 글루 데이터 카탈로그를 Athena와 함께 사용, IAM 정책을 통해 glue:BatchCreatePartition 작업. glue:BatchCreatePartition 작업을 허용하는 IAM 정책의 예는 AmazonAthenaFullAccess 관리형 정책 단원을 참조하십시오.

Amazon S3 경로를 소문자로 변경

Amazon S3 경로는 소문자여야 합니다. S3 경로가 camel 표기인 경우 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/