AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

MSCK REPAIR TABLE 쿼리가 AWS Glue 데이터 카탈로그에 파티션을 추가하지 않는 이유는 무엇인가요?

2분 분량
0

MSCK REPAIR TABLE 쿼리를 실행하면 Amazon Athena가 파티션 목록을 반환합니다. 하지만 Athena가 AWS Glue 데이터 카탈로그의 테이블에 파티션을 추가하지 못했습니다.

간략한 설명

다음과 같은 일반적인 이유로 인해 Athena가 데이터 카탈로그의 테이블에 파티션을 추가하지 못하는 경우가 있습니다.

  • AWS Identity and Access Management(IAM) 사용자 또는 역할에 glue:BatchCreatePartition 작업을 허용하는 정책이 없습니다.
  • Amazon Simple Storage Service(S3) 경로가 소문자가 아닌 대문자로 되어 있습니다.
  • 파티션은 하이브 스타일 형식인 연도=2023/월=01/일=01로 포맷되지 않습니다. 대신 파티션은 하이브 스타일이 아닌 형식인 /2023/01/01/로 되어 있습니다.

해결 방법

IAM 정책에서 glue:BatchCreatePartition 허용

MSCK REPAIR TABLE을 실행하는 데 사용되는 사용자 또는 역할에 연결된 IAM 정책을 검토하세요. Athena와 함께 데이터 카탈로그를 사용하는 경우 IAM 정책에서 glue:BatchCreatePartition 작업을 허용해야 합니다. 정책에서 이 작업을 허용하지 않으면 Athena가 메타스토어에 파티션을 추가할 수 없습니다. glue:BatchCreatePartition 작업을 허용하는 IAM 정책의 예는 AWS 관리형 정책: AmazonAthenaFullAccess를 참고하세요.

Amazon S3 경로를 소문자로 변경

MSCK REPAIR TABLE이 데이터 카탈로그에 파티션을 추가하려면 Amazon S3 경로 이름이 소문자여야 합니다.

예를 들어 Amazon S3 경로가 userId인 경우 다음 파티션은 데이터 카탈로그에 추가되지 않습니다.

  • s3://awsdoc-example-bucket/path/userId=1/
  • s3://awsdoc-example-bucket/path/userId=2/
  • s3://awsdoc-example-bucket/path/userId=3/

이 문제를 해결하려면 소문자 userid를 사용하세요.

  • s3://awsdoc-example-bucket/path/userid=1/
  • s3://awsdoc-example-bucket/path/userid=2/
  • s3://awsdoc-example-bucket/path/userid=3/

ALTER TABLE ADD PARTITION 명령 실행

ALTER TABLE ADD PARTITION 명령을 실행하여 하이브 스타일 및 비하이브 스타일 파티션 데이터 모두에 대해 글루 테이블에 파티션을 추가합니다.

LOCATION 절은 하이브 스타일이 아닌 파티션화된 데이터에 필요합니다. 파티션 데이터가 포함된 접두사에 전체 Amazon S3 경로를 포함해야 합니다.

ALTER TABLE orders ADD

PARTITION (year = '2023', month = '01', day ='01')
LOCATION 's3://mystorage/path/to/test/'

PARTITION (year = '2023', month = '01', day ='02')
LOCATION 's3://mystorage/path/to/test/';

관련 정보

Athena의 데이터 파티셔닝

작업, 리소스 및 Amazon Athena의 조건 키

AWS Glue에 대한 작업, 리소스 및 조건

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음