Apache Iceberg 테이블 사용 - Amazon Athena

Apache Iceberg 테이블 사용

Athena는 데이터로 Apache Parquet 형식을 사용하고 메타스토어로 AWS Glue 카탈로그를 사용하는 Apache Iceberg 테이블에 대한 읽기, 시간 이동 및 쓰기 및 DDL 쿼리를 지원합니다.

Apache Iceberg는 매우 큰 분석 데이터 세트를 위한 오픈 테이블 형식입니다. Iceberg는 대규모 파일 모음을 테이블로 관리하며 레코드 수준 삽입, 업데이트, 삭제 및 시간 이동 쿼리와 같은 최신 분석 데이터 레이크 작업을 지원합니다. Iceberg 사양은 스키마 및 파티션 진화와 같은 원활한 테이블 진화를 허용하며, Amazon S3에서 사용하기에 최적화되도록 설계되었습니다. 또한 Iceberg는 동시 쓰기 시나리오에서 데이터 정확성을 보장하는 데 도움이 됩니다.

Apache Iceberg에 대한 자세한 내용은 https://iceberg.apache.org/를 참조하세요.

고려 사항 및 제한

Iceberg 테이블에 대한 Athena 지원에는 다음과 같은 고려 사항 및 제한 사항이 있습니다.

  • Iceberg 버전 지원 - Athena는 Apache Iceberg 버전 1.4.2를 지원합니다.

  • AWS Glue 카탈로그를 포함한 테이블만 해당 - Athena는 오픈 소스 Glue 카탈로그 구현에 정의된 사양을 기반으로 AWS Glue 카탈로그에 대해 생성된 Iceberg 테이블만 지원합니다.

  • AWS Glue에 의한 테이블 잠금만 지원 - 플러그인 사용자 지정 잠금을 지원하는 오픈 소스 Glue 카탈로그 구현과 달리 Athena는 AWS Glue 낙관적 잠금만 지원합니다. Athena를 사용하여 다른 잠금 구현으로 Iceberg 테이블을 수정하면 잠재적 데이터 손실 및 트랜잭션 중단이 발생할 수 있습니다.

  • 지원되는 파일 형식 - Athena의 Iceberg 파일 형식 지원은 다음 표와 같이 Athena 엔진 버전에 따라 다릅니다.

    Athena 엔진 버전 PARQUET ORC Avro
    2 아니요 아니요
    3
  • Iceberg v2 테이블 - Athena는 Iceberg v2 테이블에서만 생성하고 작동합니다. v1과 v2 테이블의 차이점은 Apache Iceberg 설명서의 Format version changes(포맷 버전 변경 사항)을 참조하세요.

  • 시간대가 없는 시간 유형 표시 - 시간대 유형이 없는 시간 및 타임스탬프는 UTC로 표시됩니다. 시간 열의 필터 표현식에 표준 시간대가 지정되지 않은 경우 UTC가 사용됩니다.

  • 타임스탬프 관련 데이터 정밀도 - Iceberg는 타임스탬프 데이터 형식에 대해 마이크로초 정밀도를 지원하지만, Athena는 읽기 및 쓰기 모두에서 타임스탬프에 대해 밀리초 정밀도만 지원합니다. Athena는 수동 압축 작업 중에 다시 작성된 시간 관련 열의 데이터에 대해 밀리초 정밀도만 유지합니다.

  • 지원되지 않는 작업 - 다음 Athena 작업은 Iceberg 테이블에서 지원되지 않습니다.

  • 보기 - 뷰 작업에 설명된 대로 CREATE VIEW를 사용하여 Athena 보기를 생성합니다. Iceberg 보기 사양을 사용하여 보기를 생성하려면 athena-feedback@amazon.com에 문의하세요.

  • TTF 관리 명령이 AWS Lake Formation에서 지원되지 않음 - Lake Formation을 사용하여 Apache Iceberg, Apache Hudi 및 Linux Foundation Delta Lake와 같은 TransactionTable Formats(TTF)에 대한 읽기 액세스 권한을 관리할 수는 있지만, Lake Formation을 사용하여 이러한 테이블 형식에서 VACUUM, MERGE, UPDATE 또는 OPTIMIZE와 같은 작업에 대한 권한을 관리할 수는 없습니다. Athena와 Lake Formation의 통합에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서Using AWS Lake Formation with Amazon Athena를 참조하세요.

  • 중첩 필드를 기준으로 파티셔닝 - 중첩 필드에 기반한 파티셔닝은 지원되지 않습니다. 이를 시도하면 다음 메시지가 나타납니다. NOT_SUPPORTED: Partitioning by nested field is unsupported: column_name.nested_field_name.

  • S3 Glacier 객체 건너뛰기 미지원 – Apache Iceberg 테이블의 객체가 Amazon S3 Glacier 스토리지 클래스에 있는 경우 read_restored_glacier_objects 테이블 속성을 false로 설정해도 효과가 없습니다.

    예를 들어 다음과 같은 명령을 실행한다고 가정하겠습니다.

    ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')

    Iceberg 및 Delta Lake 테이블의 경우 이 명령은 지원되지 않는 테이블 속성 키: read_restored_glacier_objects 오류를 생성합니다. Hudi 테이블의 경우 ALTER TABLE 명령은 오류를 생성하지 않지만 여전히 Amazon S3 Glacier 객체를 건너뛰지 않습니다. ALTER TABLE 명령 후에 SELECT 쿼리를 실행하면 계속해서 모든 개체가 반환됩니다.

Athena가 특정 기능을 지원하도록 하려면 athena-feedback@amazon.com으로 피드백을 보내 주세요.