

# Apache Iceberg 테이블 쿼리
<a name="querying-iceberg"></a>

Athena를 사용하여 Apache Iceberg 테이블에 대한 읽기, 시간 이동, 쓰기 및 DDL 쿼리를 수행할 수 있습니다.

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

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

## 고려 사항 및 제한 사항
<a name="querying-iceberg-considerations-and-limitations"></a>

Iceberg 테이블에 대한 Athena 지원에는 다음과 같은 고려 사항 및 제한 사항이 있습니다.
+ **Iceberg 버전 지원** - Athena는 Apache Iceberg 버전 1.4.2를 지원합니다.
+ **Lake Formation에 등록된 테이블** - Athena는 현재 Lake Formation에 등록된 Iceberg 테이블에서 DDL 작업을 지원하지 않습니다.
+ **정보 스키마에 대한 쿼리** - Iceberg 테이블의 정보 스키마를 쿼리할 때 Athena는 S3 메타데이터를 열 메타데이터의 신뢰할 수 있는 소스로 사용합니다. 즉, 열 정보는 카탈로그 메타데이터가 아닌 기본 S3 파일에서 파생됩니다. 이 동작은 카탈로그 메타데이터가 열 정보의 기본 소스일 수 있는 다른 테이블 형식과 다릅니다.
+ **AWS Glue 카탈로그를 포함한 테이블만 해당** - Athena는 [오픈 소스 Glue 카탈로그 구현](https://iceberg.apache.org/docs/latest/aws/#glue-catalog)에 정의된 사양을 기반으로 AWS Glue 카탈로그에 대해 생성된 Iceberg 테이블만 지원합니다.
+ **AWS Glue에 의한 테이블 잠금만 지원** - 플러그인 사용자 지정 잠금을 지원하는 오픈 소스 Glue 카탈로그 구현과 달리 Athena는 AWS Glue 낙관적 잠금만 지원합니다. Athena를 사용하여 다른 잠금 구현으로 Iceberg 테이블을 수정하면 잠재적 데이터 손실 및 트랜잭션 중단이 발생할 수 있습니다.
+ **지원되는 파일 형식** - Athena 엔진 버전 3은 Iceberg 파일 형식을 지원합니다.
  + PARQUET
  + ORC
  + Avro
+ **Iceberg 제한된 메타데이터** - Lake Formation은 Iceberg 메타데이터 테이블을 평가하지 않습니다. 따라서 기본 테이블에 Lake Formation 행 또는 셀 필터가 있거나 기본 테이블의 모든 열을 볼 권한이 없는 경우 Iceberg 메타데이터 테이블이 제한됩니다. 이 경우 `$partitions`, `$files` `$manifests`, `$snapshots` Iceberg 메타데이터 테이블을 쿼리하면 실패하고 `AccessDeniedException` 오류가 발생합니다. 또한 메타데이터 열 `$path`에는 동일한 Lake Formation 제한이 적용되며 쿼리에서 선택할 때 실패합니다. Lake Formation 필터에 관계없이 다른 모든 메타데이터 테이블을 쿼리할 수 있습니다. 자세한 내용은 [Metadata tables](https://trino.io/docs/current/connector/iceberg.html#metadata-tables)를 참조하세요.
+ **Iceberg v2 테이블** - Athena는 Iceberg v2 테이블에서만 생성하고 작동합니다. v1과 v2 테이블의 차이점은 Apache Iceberg 설명서의 [Format version changes](https://iceberg.apache.org/spec/#appendix-e-format-version-changes)(포맷 버전 변경 사항)을 참조하세요.
+ **시간대가 없는 시간 유형 표시** - 시간대 유형이 없는 시간 및 타임스탬프는 UTC로 표시됩니다. 시간 열의 필터 표현식에 표준 시간대가 지정되지 않은 경우 UTC가 사용됩니다.
+ **타임스탬프 관련 데이터 정밀도** - Iceberg는 타임스탬프 데이터 형식에 대해 마이크로초 정밀도를 지원하지만, Athena는 읽기 및 쓰기 모두에서 타임스탬프에 대해 밀리초 정밀도만 지원합니다. Athena는 수동 압축 작업 중에 다시 작성된 시간 관련 열의 데이터에 대해 밀리초 정밀도만 유지합니다.
+ **지원되지 않는 작업** - 다음 Athena 작업은 Iceberg 테이블에서 지원되지 않습니다.
  + [ALTER TABLE SET LOCATION](alter-table-set-location.md)
+ **보기** - [뷰 작업](views.md)에 설명된 대로 `CREATE VIEW`를 사용하여 Athena 보기를 생성합니다. [Iceberg 보기 사양](https://github.com/apache/iceberg/blob/master/format/view-spec.md)을 사용하여 보기를 생성하려면 [athena-feedback@amazon.com](mailto: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](https://docs.aws.amazon.com/lake-formation/latest/dg/athena-lf.html)를 참조하세요.
+ **중첩 필드를 기준으로 파티셔닝** - 중첩 필드에 기반한 파티셔닝은 지원되지 않습니다. 이를 시도하면 다음 메시지가 나타납니다. NOT\_SUPPORTED: Partitioning by nested field is unsupported: {{column\_name}}.{{nested\_field\_name}}.
+ **Amazon Glacier 객체 건너뛰기 미지원** – Apache Iceberg 테이블의 객체가 Amazon 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 Glacier 객체를 건너뛰지 않습니다. `ALTER TABLE` 명령 후에 `SELECT` 쿼리를 실행하면 계속해서 모든 개체가 반환됩니다.

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

**Topics**
+ [고려 사항 및 제한 사항](#querying-iceberg-considerations-and-limitations)
+ [Iceberg 테이블 생성](querying-iceberg-creating-tables.md)
+ [Iceberg 테이블 데이터 쿼리](querying-iceberg-table-data.md)
+ [시간 이동 및 버전 이동 쿼리 수행](querying-iceberg-time-travel-and-version-travel-queries.md)
+ [Iceberg 테이블 데이터 업데이트](querying-iceberg-updating-iceberg-table-data.md)
+ [Iceberg 테이블 관리](querying-iceberg-managing-tables.md)
+ [Iceberg 테이블 스키마 개선](querying-iceberg-evolving-table-schema.md)
+ [Iceberg 테이블에서 다른 DDL 작업 수행](querying-iceberg-additional-operations.md)
+ [Iceberg 테이블 최적화](querying-iceberg-data-optimization.md)
+ [AWS Glue Data Catalog 구체화된 뷰 쿼리](querying-iceberg-gdc-mv.md)
+ [Athena에서 Iceberg 테이블에 대해 지원되는 데이터 형식](querying-iceberg-supported-data-types.md)
+ [추가 리소스](querying-iceberg-additional-resources.md)