Linux Foundation Delta Lake 테이블 쿼리 - Amazon Athena

Linux Foundation Delta Lake 테이블 쿼리

Linux Foundation Delta Lake는 빅 데이터 분석을 위한 테이블 형식입니다. Amazon Athena를 사용하면 매니페스트 파일을 생성하거나 MSCK REPAIR 문을 실행할 필요 없이 Amazon S3에 저장된 Delta Lake 테이블을 직접 읽을 수 있습니다.

Delta Lake 형식은 각 데이터 파일의 열당 최소값과 최대값을 저장합니다. Athena 구현에서는 이 정보를 사용하여 조건자에 대한 파일 건너뛰기를 활성화하여 원치 않는 파일이 고려되지 않도록 합니다.

고려 사항 및 제한

Athena의 Delta Lake 지원에는 다음과 같은 고려 사항 및 제한 사항이 있습니다.

  • AWS Glue 카탈로그를 포함하는 테이블만 - 기본 Delta Lake 지원은 AWS Glue에 등록된 테이블을 통해서만 지원됩니다. 다른 메타스토어에 등록된 Delta Lake 테이블이 있는 경우 해당 테이블을 그대로 유지하고 기본 메타스토어로 처리할 수 있습니다. Delta Lake 메타데이터는 메타스토어가 아닌 파일 시스템(예: Amazon S3)에 저장되므로 Athena에서는 AWS Glue에 위치 속성만 있으면 Delta Lake 테이블에서 읽을 수 있습니다.

  • V3 engine only(V3 엔진 전용) - Delta Lake 쿼리는 Athena 엔진 버전 3에서만 지원됩니다. 생성된 작업 그룹이 Athena 엔진 버전 3을 사용하도록 구성되어 있는지 확인해야 합니다.

  • No time travel support(시간 이동 지원 안 함) - Delta Lake의 시간 이동 기능을 사용하는 쿼리는 지원되지 않습니다.

  • Read only(읽기 전용) - DML 문(예: UPDATE, INSERT 또는 DELETE)을 쓸 수 없습니다.

  • Lake Formation 지원 - Lake Formation 통합은 AWS Glue와 스키마가 동기화된 Delta Lake 테이블에 사용할 수 있습니다. 자세한 내용은 AWS Lake Formation 개발자 안내서Using AWS Lake Formation with Amazon AthenaSet up permissions for a Delta Lake table을 참조하세요.

  • Limited DDL support(제한된 DDL 지원) - CREATE EXTERNAL TABLE, SHOW COLUMNS, SHOW TBLPROPERTIES, SHOW PARTITIONS, SHOW CREATE TABLE, DESCRIBE DDL 문이 지원됩니다. CREATE EXTERNAL TABLE 문 사용에 대한 자세한 내용은 시작 단원을 참조하세요.

  • S3 Glacier 객체 건너뛰기 미지원 – Linux Foundation Delta Lake 테이블의 객체가 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 쿼리를 실행하면 계속해서 모든 개체가 반환됩니다.

Delta Lake 버전 관리 및 Athena

Athena는 Delta Lake 설명서에 나열된 버전 관리를 사용하지 않습니다. Delta Lake 테이블이 Athena와 호환되는지 확인하려면 다음 두 가지 특성을 고려하세요.

  • 리더 버전 - 모든 Delta Lake 테이블에는 리더 버전이 있습니다. 현재 이 값은 1~3 사이입니다. Athena가 지원하지 않는 리더 버전이 포함된 테이블을 포함하는 쿼리는 실패합니다.

  • 테이블 기능 - 모든 Delta Lake 테이블은 리더/라이터 기능 세트를 선언할 수도 있습니다. Athena의 Delta Lake 지원은 읽기 전용이므로 테이블 라이터 기능 호환성은 적용되지 않습니다. 하지만 테이블 리더 기능이 지원되지 않는 테이블에 대한 쿼리는 실패합니다.

다음 표는 Athena가 지원하는 Delta Lake 리더 버전과 Delta Lake 테이블 리더 기능을 보여줍니다.

쿼리 유형 지원되는 리더 버전 지원되는 리더 기능
DQL(SELECT 문) <= 3 열 매핑, timestampNtz, 삭제 벡터
DDL <= 1 해당 사항 없음. 리더 기능은 리더 버전이 2 이상인 테이블에서만 선언할 수 있습니다.

Athena에서 리더 버전이 1보다 큰 Delta Lake 테이블을 생성하려면 Delta Lake 메타데이터 동기화 섹션을 참조하세요.