Apache Iceberg™ 테이블과 함께 Snowpipe Streaming 사용하기¶
Snowflake Ingest SDK 버전 3.0.0 이상에서는 Snowpipe Streaming 을 통해 Snowflake가 관리하는 Apache Iceberg 테이블로 데이터를 수집할 수 있습니다. Snowpipe Streaming Ingest Java SDK 는 표준 Snowflake 테이블(비 Iceberg)과 Iceberg 테이블 모두에 대한 로딩을 지원합니다.
Snowpipe Streaming API 를 통해 전송된 데이터는 하나 이상의 채널을 통해 행을 수집하며, 지정된 MAX_CLIENT_LAG
에 따라 자동으로 플러시됩니다.
MAX_CLIENT_LAG
속성은 스트림 수집의 지연 시간을 제어합니다.
표준 Snowflake 테이블(비Iceberg)의 경우 기본
MAX_CLIENT_LAG
는 1초입니다.Iceberg 테이블의 경우 기본
MAX_CLIENT_LAG
는 30초입니다.
Snowflake는 외부 볼륨 을 사용하여 저장소 위치에 연결하고, Snowpipe Streaming은 데이터를 플러시하여 해당 Iceberg 메타데이터가 포함된 Iceberg 호환 Parquet 데이터 파일을 생성합니다. 이러한 Parquet 데이터 및 메타데이터 파일은 구성된 외부 클라우드 저장소 위치에 업로드되며, Snowflake에서 관리하는 Iceberg 테이블로 Iceberg 카탈로그에 등록되어 가용성이 제공됩니다.
구성¶
구성된 외부 볼륨으로 Snowflake 관리 Iceberg 테이블 을 생성하고, 열린 채널 요청에 Iceberg 테이블 이름을 지정합니다.
Snowflake 관리 Iceberg 테이블로 Snowpipe Streaming을 사용하려면 profile.json
파일에서 다음 속성 ENABLE_ICEBERG_STREAMING=true
를 설정해야 합니다.
지원되는 데이터 타입¶
Snowflake Ingest SDK 는 현재 Snowflake가 지원하는 것과 동일하게 대부분의 Iceberg 데이터 타입을 지원합니다. 자세한 내용은 Apache Iceberg™ 테이블의 데이터 타입 섹션을 참조하십시오.
Snowflake Ingest SDK 는 정형 ARRAY, 정형 OBJECT, 정형 MAP 의 세 가지 정형 데이터 타입 으로의 수집을 지원합니다.
사용법 노트¶
기본
MAX_CLIENT_LAG
는 Snowflake 관리 Iceberg 테이블로 스트리밍하는 데 30초로 설정되어 있어 Parquet 파일을 최적화할 수 있습니다. 속성을 더 낮은 값으로 설정할 수 있지만 처리량이 현저히 많지 않는 한 이 작업을 수행하지 않는 것이 좋습니다.Ingest SDK 는 비동기적으로 작은 Parquet 파일의 자동 서버리스 압축을 지원합니다.
동일한 클라이언트 애플리케이션을 Iceberg 테이블과 비Iceberg 테이블에 동시에 사용할 수 없습니다.
Snowflake로 관리되는 Iceberg 테이블은 클라이언트 측 암호화를 지원하지 않습니다.
Iceberg 호환 Parquet 파일은 Iceberg 테이블에 지정된 STORAGE_SERIALIZATION_POLICY 을 기반으로 생성됩니다.
Snowpipe Streaming은 Iceberg 카탈로그로 Snowflake만 지원하지만, Snowflake Open Catalog 와의 동기화도 지원합니다.
Snowflake는 외부 볼륨 을 사용하여 저장소 위치에 연결합니다. Iceberg 테이블의 데이터 저장소 는 사용자에게 책임이 있습니다.
Snowflake가 관리하는 Iceberg 테이블에 대한 Snowpipe Streaming 수집은 제한된 기간 동안 무료로 사용할 수 있습니다.
제한 사항¶
Snowpipe Streaming에 대해 설명된 제한 사항 은 Iceberg 테이블을 사용한 Snowpipe Streaming에도 적용됩니다.