Athena 쿼리가 오류 'HIVE_PARTITION_SCHEMA_MISMATCH'와 함께 실패하는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 4월 9일

파티셔닝된 테이블에 Amazon Athena 쿼리를 실행할 때 오류 'HIVE_PARTITION_SCHEMA_MISMATCH'와 함께 쿼리가 실패합니다.

간략한 설명

Athena의 파티셔닝된 테이블에 쿼리를 실행하면 Athena는 AWS Glue Data Catalog에서 테이블 스키마와 해당 파티션의 스키마의 유효성을 검사합니다. 유효성 검사는 열 데이터 유형을 순서대로 비교하고 열 데이터 유형이 겹치는 열에 대해 일치하는지 확인합니다. 새 파티션은 일반적으로 연관된 테이블의 스키마를 상속합니다. 그러나 특정 시나리오에서는 스키마가 시간이 지남에 따라 달라질 수 있습니다. 파티션 스키마의 열에 대한 데이터 유형이 테이블 스키마의 열 데이터 유형과 일치하지 않으면 쿼리가 실패하고 오류 'HIVE_PARTITION_SCHMA_MISMATCH'가 표시됩니다.

다음 접근 방식 중 하나를 사용하여 이 오류를 해결할 수 있습니다.

  • AWS Glue 크롤러를 사용하여 테이블을 생성한 경우에는 파티션 스키마를 업데이트하도록 AWS Glue 크롤러를 구성합니다.
  • 테이블을 수동으로 생성한 경우에는 Athena DDL(데이터 정의 언어) 문을 사용하여 영향을 받는 파티션을 삭제하고 파티션을 다시 생성합니다.

해결 방법

파티션 스키마를 업데이트하도록 AWS Glue 크롤러 구성

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 크롤러(Crawlers)를 선택합니다.
  3. 구성하려는 크롤러를 선택합니다.
  4. 작업(Action)을 선택한 다음 크롤러 편집(Edit crawler)을 선택합니다.
  5. 크롤러의 출력 선택(Choose the crawler's output) 페이지로 이동할 때까지 다음(Next)을 선택합니다.
  6. 구성 옵션(Configuration options)을 확장합니다.
  7. 테이블에서 메타데이터가 있는 새 파티션과 기존 파티션을 모두 업데이트(Update all new and existing partitions with metadata from the table)를 선택합니다.
  8. 다음(Next)을 선택한 다음 완료(Finish)를 선택하여 크롤러 구성을 저장합니다.
  9. 크롤러(Crawlers) 페이지에서 편집한 크롤러를 선택합니다.
  10. 크롤러 실행(Run crawler)을 선택합니다. 크롤러를 실행하면 파티션이 테이블 스키마를 상속합니다.

Athena DDL 문을 사용하여 영향을 받는 파티션을 삭제하고 삭제된 파티션을 다시 생성

  1. Amazon Athena 콘솔을 엽니다.
  2. 쿼리 편집기(Query editor) 탭에서 ALTER TABLE DROP PARTITION 명령을 실행하여 영향을 받는 파티션을 삭제합니다.
  3. ALTER TABLE ADD PARTITION 명령을 실행하여 삭제된 파티션을 다시 생성합니다.
    참고: 테이블에서 Hive 호환 파티션을 사용하는 경우, MSCK REPAIR TABLE 명령을 실행하여 삭제된 파티션을 다시 생성할 수 있습니다.