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 카탈로그
주의
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( |
해시된 값 모드(Mod) N 개 버킷별 파티션 Hive 테이블의 해시 버킷팅과 같은 개념입니다. |
int , long , decimal ,
date , timestamp ,
string , binary
|
truncate( |
L 로 잘린 값별 파티션 |
int , long , decimal ,
string |
Athena는 Iceberg의 숨겨진 분할을 지원합니다. 자세한 내용은 Apache Iceberg 설명서의 Iceberg의 숨겨진 분할
테이블 속성
이 섹션에서는 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
설명 |
테이블의 기본 브랜치에 유지할 최소 스냅샷 수입니다. 이 값은 |
허용되는 속성 값 | 양수. |
기본값 | 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를 참조하세요.