Iceberg 테이블 생성 - Amazon Athena

Iceberg 테이블 생성

Athena에서 사용할 Iceberg 테이블을 생성하려면 이 페이지에서 설명하는 CREATE TABLE 문을 사용하거나 AWS Glue 크롤러를 사용할 수 있습니다.

CREATE TABLE 문 사용

Athena는 Iceberg v2 테이블을 생성합니다. v1과 v2 테이블의 차이점은 Apache Iceberg 설명서의 Format version changes(포맷 버전 변경 사항)을 참조하세요.

Athena CREATE TABLE은 데이터가 없는 Iceberg 테이블을 생성합니다. 테이블이 Iceberg 오픈 소스 Glue 카탈로그를 사용하는 경우 Apache Spark와 같은 외부 시스템에서 직접 테이블을 쿼리할 수 있습니다. 외부 테이블을 만들 필요는 없습니다.

주의

CREATE EXTERNAL TABLE을 실행하면 오류 메시지 External keyword not supported for table type ICEBERG가 표시됩니다.

Athena에서 Iceberg 테이블을 생성하려면 다음 구문 요약과 같이 TBLPROPERTIES 절에서 'table_type' 테이블 속성을 'ICEBERG'로 설정하세요.

CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' ='ICEBERG' [, property_name=property_value] )

Iceberg 테이블에서 쿼리할 수 있는 데이터 형식에 대한 자세한 내용은 Athena에서 Iceberg 테이블에 대해 지원되는 데이터 형식 섹션을 참조하세요.

분할

파티션이 있는 Iceberg 테이블을 생성하려면 PARTITIONED BY 구문을 사용합니다. 분할에 사용되는 열은 열 선언에서 먼저 지정해야 합니다. PARTITIONED BY 절 내에서는 열 유형을 포함하지 않아야 합니다. CREATE TABLE 구문에 파티션 변환을 정의할 수도 있습니다. 분할을 위해 여러 열을 지정하려면 다음 예와 같이 열을 쉼표(,)로 구분합니다.

CREATE TABLE iceberg_table (id bigint, data string, category string) PARTITIONED BY (category, bucket(16, id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' = 'ICEBERG' )

다음 표에서는 사용 가능한 파티션 변환 함수를 보여줍니다.

함수 설명 지원되는 유형
year(ts) 연도별 파티션 date, timestamp
month(ts) 월별 파티션 date, timestamp
day(ts) 일별 파티션 date, timestamp
hour(ts) 시간별 파티션 timestamp
bucket(N, col) 해시된 값 모드(Mod) N개 버킷별 파티션 Hive 테이블의 해시 버킷팅과 같은 개념입니다. int, long, decimal, date, timestamp, string, binary
truncate(L, col) L로 잘린 값별 파티션 int, long, decimal, string

Athena는 Iceberg의 숨겨진 분할을 지원합니다. 자세한 내용은 Apache Iceberg 설명서의 Iceberg의 숨겨진 분할(Iceberg's hidden partitioning)을 참조하세요.

테이블 속성

이 섹션에서는 CREATE TABLE 문의 TBLPROPERTIES 절에 키-값 페어로 지정할 수 있는 테이블 속성에 대해 설명합니다. Athena는 Iceberg 테이블을 만들거나 변경하기 위해 테이블 속성에 미리 정의된 키-값 페어의 목록만 허용합니다. 다음 테이블에서는 지정할 수 있는 테이블 속성을 보여줍니다. 압축 옵션에 대한 자세한 내용은 이 문서의 Iceberg 테이블 최적화를 참조하세요. Athena가 특정 오픈 소스 테이블 구성 속성을 지원하도록 하려면 athena-feedback@amazon.com으로 피드백을 보내세요.

format

설명 파일 데이터 형식
허용되는 속성 값 지원되는 파일 형식 및 압축 조합은 Athena 엔진 버전에 따라 다릅니다. 자세한 내용은 파일 형식별 Iceberg 테이블 압축 지원 섹션을 참조하세요.
기본값 parquet

write_compression

설명 파일 압축 코덱
허용되는 속성 값 지원되는 파일 형식 및 압축 조합은 Athena 엔진 버전에 따라 다릅니다. 자세한 내용은 파일 형식별 Iceberg 테이블 압축 지원 섹션을 참조하세요.
기본값

기본 쓰기 압축은 Athena 엔진 버전에 따라 다릅니다. 자세한 내용은 파일 형식별 Iceberg 테이블 압축 지원 섹션을 참조하세요.

optimize_rewrite_data_file_threshold

설명 데이터 최적화별 구성입니다. 최적화가 필요한 데이터 파일이 주어진 임계값보다 적으면 파일이 재작성되지 않습니다. 이를 통해 더 많은 데이터 파일을 누적하여 대상 크기에 더 가까운 파일을 생성하고 비용 절감을 위해 불필요한 계산을 건너뛸 수 있습니다.
허용되는 속성 값 양수. 50 미만이어야 합니다.
기본값 5

optimize_rewrite_delete_file_threshold

설명 데이터 최적화별 구성입니다. 데이터 파일과 연관된 삭제 파일이 임계값보다 적으면 데이터 파일이 재작성되지 않습니다. 이를 통해 비용 절감을 위해 각 데이터 파일에 대해 더 많은 삭제 파일을 누적할 수 있습니다.
허용되는 속성 값 양수. 50 미만이어야 합니다.
기본값 2

vacuum_min_snapshots_to_keep

설명

테이블의 기본 브랜치에 유지할 최소 스냅샷 수입니다.

이 값은 vacuum_max_snapshot_age_seconds 속성보다 우선합니다. 남은 최소 스냅샷이 vacuum_max_snapshot_age_seconds에서 지정한 수명보다 오래된 경우 스냅샷이 보관되고 vacuum_max_snapshot_age_seconds의 값은 무시됩니다.

허용되는 속성 값 양수.
기본값 1

vacuum_max_snapshot_age_seconds

설명 기본 브랜치에 유지할 스냅샷의 최대 수명입니다. vacuum_min_snapshots_to_keep에서 지정한 남은 최소 스냅샷이 지정된 수명보다 오래된 경우 이 값은 무시됩니다. 이 테이블 동작 속성은 Apache Iceberg 구성의 history.expire.max-snapshot-age-ms 속성에 해당합니다.
허용되는 속성 값 양수.
기본값 432000초(5일)

vacuum_max_metadata_files_to_keep

설명 테이블의 기본 브랜치에 유지할 최대 이전 메타데이터 파일 수입니다.
허용되는 속성 값 양수.
기본값 100

CREATE TABLE 문 예제

다음 예에서는 3개의 열이 있는 Iceberg 테이블을 생성합니다.

CREATE TABLE iceberg_table ( id int, data string, category string) PARTITIONED BY (category, bucket(16,id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/iceberg-folder' TBLPROPERTIES ( 'table_type'='ICEBERG', 'format'='parquet', 'write_compression'='snappy', 'optimize_rewrite_delete_file_threshold'='10' )

CREATE TABLE AS SELECT(CTAS)

CREATE TABLE AS 문을 사용하여 Iceberg 테이블을 생성하는 방법에 대한 자세한 내용은 CREATE TABLE AS를 참조하세요. 특히 CTAS 테이블 속성 섹션에 주의하세요.

AWS Glue 크롤러 사용

AWS Glue 크롤러를 사용하여 Iceberg 테이블을 AWS Glue Data Catalog에 자동으로 등록할 수 있습니다. 다른 Iceberg 카탈로그에서 마이그레이션하려는 경우 AWS Glue 크롤러를 생성 및 예약하고 Iceberg 테이블이 위치한 Amazon S3 경로를 제공할 수 있습니다. AWS Glue 크롤러가 통과할 수 있는 Amazon S3 경로의 최대 깊이를 지정할 수 있습니다. AWS Glue 크롤러를 예약한 후 실행할 때마다 크롤러가 스키마 정보를 추출하고 스키마 변경 내용으로 AWS Glue Data Catalog를 업데이트합니다. AWS Glue 크롤러는 스냅샷 간 스키마 병합을 지원하고 AWS Glue Data Catalog의 최신 메타데이터 파일 위치를 업데이트합니다. 자세한 내용은 Data Catalog and crawlers in AWS Glue를 참조하세요.