파티셔닝된 테이블에 Amazon Athena 쿼리를 실행할 때 오류 'HIVE_PARTITION_SCHEMA_MISMATCH'와 함께 쿼리가 실패합니다.
간략한 설명
Athena의 파티셔닝된 테이블에 쿼리를 실행하면 Athena는 AWS Glue Data Catalog에서 테이블 스키마와 해당 파티션의 스키마의 유효성을 검사합니다. 유효성 검사는 열 데이터 유형을 순서대로 비교하고 열 데이터 유형이 겹치는 열에 대해 일치하는지 확인합니다. 새 파티션은 일반적으로 연관된 테이블의 스키마를 상속합니다. 그러나 특정 시나리오에서는 스키마가 시간이 지남에 따라 달라질 수 있습니다. 파티션 스키마의 열에 대한 데이터 유형이 테이블 스키마의 열 데이터 유형과 일치하지 않으면 쿼리가 실패하고 오류 'HIVE_PARTITION_SCHMA_MISMATCH'가 표시됩니다.
다음 접근 방식 중 하나를 사용하여 이 오류를 해결할 수 있습니다.
- AWS Glue 크롤러를 사용하여 테이블을 생성한 경우에는 파티션 스키마를 업데이트하도록 AWS Glue 크롤러를 구성합니다.
- 테이블을 수동으로 생성한 경우에는 Athena DDL(데이터 정의 언어) 문을 사용하여 영향을 받는 파티션을 삭제하고 파티션을 다시 생성합니다.
해결 방법
파티션 스키마를 업데이트하도록 AWS Glue 크롤러 구성
- AWS Glue 콘솔을 엽니다.
- 탐색 창에서 **크롤러(Crawlers)**를 선택합니다.
- 구성하려는 크롤러를 선택합니다.
- **작업(Action)**을 선택한 다음 **크롤러 편집(Edit crawler)**을 선택합니다.
- 크롤러의 출력 선택(Choose the crawler's output) 페이지로 이동할 때까지 **다음(Next)**을 선택합니다.
- **구성 옵션(Configuration options)**을 확장합니다.
- **테이블에서 메타데이터가 있는 새 파티션과 기존 파티션을 모두 업데이트(Update all new and existing partitions with metadata from the table)**를 선택합니다.
- **다음(Next)**을 선택한 다음 **완료(Finish)**를 선택하여 크롤러 구성을 저장합니다.
- 크롤러(Crawlers) 페이지에서 편집한 크롤러를 선택합니다.
- **크롤러 실행(Run crawler)**을 선택합니다. 크롤러를 실행하면 파티션이 테이블 스키마를 상속합니다.
Athena DDL 문을 사용하여 영향을 받는 파티션을 삭제하고 삭제된 파티션을 다시 생성
- Amazon Athena 콘솔을 엽니다.
- 쿼리 편집기(Query editor) 탭에서 ALTER TABLE DROP PARTITION 명령을 실행하여 영향을 받는 파티션을 삭제합니다.
- ALTER TABLE ADD PARTITION 명령을 실행하여 삭제된 파티션을 다시 생성합니다.
참고: 테이블에서 Hive 호환 파티션을 사용하는 경우, MSCK REPAIR TABLE 명령을 실행하여 삭제된 파티션을 다시 생성할 수 있습니다.
관련 정보
"HIVE_PARTITION_SCHEMA_MISMATCH"를 피하기 위한 파티션 스키마 동기화
AWS Glue 콘솔에서 크롤러 구성 옵션 설정