Snowflake에서 Apache Iceberg™ 테이블 생성¶
다양한 카탈로그 옵션 에 대해 Snowflake에서 Apache Iceberg™ 테이블 를 생성합니다. CREATE ICEBERG TABLE 명령을 사용하여 Iceberg 테이블을 생성할 수 있습니다.
참고
Iceberg 테이블을 생성하려면 세션의 현재 웨어하우스로 지정된 실행 중인 웨어하우스가 있어야 합니다. Iceberg 테이블을 생성할 때 실행 중인 웨어하우스를 지정하지 않으면 오류가 발생할 수 있습니다. 자세한 내용은 웨어하우스 관련 작업하기 를 참조하십시오.
Snowflake Open Catalog 와 함께 작동하는 Iceberg 테이블을 생성하려면 Snowflake에서 Snowflake Open Catalog 가 있는 Apache Iceberg™ 테이블 사용 섹션을 참조하십시오.
Snowflake 관리¶
Snowflake를 카탈로그로 사용하여 Iceberg 테이블을 만들려면 Snowflake가 테이블 데이터와 메타데이터를 쓸 수 있는 외부 볼륨 과 기본 위치(외부 볼륨의 디렉터리)를 지정해야 합니다. 외부 볼륨 생성에 대한 지침은 외부 볼륨 구성 섹션을 참조하십시오.
테이블 열을 정의하려면 Iceberg 데이터 타입을 사용할 수 있습니다. 자세한 내용은 Apache Iceberg™ 테이블의 데이터 타입 섹션을 참조하십시오.
다음 예제에서는 Snowflake를 Iceberg 카탈로그로 사용하여 Iceberg 테이블을 생성합니다.
CREATE OR REPLACE ICEBERG TABLE my_iceberg_table (
boolean_col boolean,
int_col int,
long_col long,
float_col float,
double_col double,
decimal_col decimal(10,5),
string_col string,
fixed_col fixed(10),
binary_col binary,
date_col date,
time_col time,
timestamp_ntz_col timestamp_ntz(6),
timestamp_ltz_col timestamp_ltz(6)
)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'my_ext_vol'
BASE_LOCATION = 'my/relative/path/from/extvol';
참고
또는 베리언트 구문을 사용하십시오. 자세한 내용은 CREATE TABLE … AS SELECT 및 CREATE ICEBERG TABLE … LIKE 를 참조하십시오.
Snowflake를 카탈로그로 사용하는 테이블을 만들면 다음과 같은 작업을 수행할 수 있습니다.
자세한 내용은 Apache Iceberg™ 테이블 관리하기 섹션을 참조하십시오.
외부 카탈로그¶
외부 카탈로그를 사용하거나 카탈로그를 전혀 사용하지 않는 Iceberg 테이블을 생성하려면 외부 볼륨 과 카탈로그 통합 을 지정해야 합니다. 외부 Iceberg 카탈로그를 사용하는 경우 추가 매개 변수를 지정해야 할 수도 있습니다. 예를 들어 AWS Glue를 카탈로그로 사용할 때 카탈로그 테이블 이름을 지정해야 합니다.
외부 카탈로그를 사용하는 Iceberg 테이블을 생성하면 Snowflake가 초기 메타데이터를 새로 고칩니다. 또한 ALTER ICEBERG TABLE … REFRESH 명령을 사용하여 테이블 메타데이터를 수동으로 새로 고쳐 메타데이터를 최신 테이블 변경 사항과 동기화할 수도 있습니다. 자세한 내용은 테이블 메타데이터 새로 고침 섹션을 참조하십시오.
AWS Glue¶
중요
Snowflake와 Glue Data Catalog 간의 신뢰 관계를 설정하려면 AWS Glue의 카탈로그 통합을 구성해야 합니다. 자세한 지침은 AWS Glue의 카탈로그 통합 구성하기 섹션을 참조하십시오.
다음 예제에서는 AWS Glue(glueCatalogInt
)에 대해 구성된 카탈로그 통합의 이름과 CATALOG_TABLE_NAME
속성의 값을 지정하여 AWS Glue Data Catalog를 사용하는 Iceberg 테이블을 생성합니다.
CREATE ICEBERG TABLE myGlueTable
EXTERNAL_VOLUME='glueCatalogVolume'
CATALOG='glueCatalogInt'
CATALOG_TABLE_NAME='myGlueTable';
AWS Glue를 카탈로그로 사용하는 테이블을 만들면 다음과 같은 작업을 수행할 수 있습니다.
오브젝트 저장소의 Iceberg 파일¶
다음 예제에서는 외부 볼륨(METADATA_FILE_PATH
)의 테이블 메타데이터에 대한 상대 경로를 지정하여 외부 클라우드 저장소의 Iceberg 메타데이터에서 Iceberg 테이블을 생성합니다.
CREATE ICEBERG TABLE myIcebergTable
EXTERNAL_VOLUME='icebergMetadataVolume'
CATALOG='icebergCatalogInt'
METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';
오브젝트 저장소의 Delta 파일¶
다음 예시 명령은 오브젝트 저장소의 Delta 테이블 파일에서 Iceberg 테이블을 생성합니다.
이 예에서는 Delta 테이블 파일의 클라우드 위치와 연결된 외부 볼륨, Delta에 대해 구성된 카탈로그 통합, 필수 BASE_LOCATION
매개 변수의 값을 지정합니다.
CREATE ICEBERG TABLE my_delta_iceberg_table
CATALOG = delta_catalog_integration
EXTERNAL_VOLUME = delta_external_volume
BASE_LOCATION = 'relative/path/from/ext/vol/';
Delta 테이블에서 분할 구성표를 사용하는 경우 Snowflake는 Delta 로그에서 해당 구성표를 자동으로 해석합니다.
Apache Iceberg™ REST 카탈로그¶
다음 예제에서는 원격 Iceberg REST 카탈로그 를 사용하는 테이블을 생성합니다.
CREATE OR REPLACE ICEBERG TABLE my_iceberg_table
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG = 'my_rest_catalog_integration'
CATALOG_TABLE_NAME = 'my_remote_table';