Snowflake 관리 테이블을 Snowflake Open Catalog 와 동기화하기¶
Apache Spark™와 같은 서드 파티 엔진을 사용하여 Snowflake가 관리하는 Apache Iceberg™ 테이블을 쿼리하려면 테이블을 Snowflake Open Catalog 와 동기화하면 됩니다.
이 항목에서는 Snowflake의 카탈로그 통합과 Open Catalog 의 외부 카탈로그를 사용하여 Snowflake가 관리하는 Iceberg 테이블을 Snowflake Open Catalog 와 동기화하는 방법에 대해 설명합니다.
1단계: 외부 볼륨 만들기¶
아직 없다면 Snowflake에 외부 볼륨을 생성하여 시작합니다. 이 볼륨은 테이블 데이터와 메타데이터를 저장할 클라우드 저장소 위치에 대한 액세스를 제공합니다.
클라우드 저장소 서비스에 대한 지침을 완료합니다.
2단계: Open Catalog 리소스 구성¶
그런 다음 이 섹션의 단계를 완료하여 Open Catalog 계정에서 외부 카탈로그 및 서비스 연결을 생성합니다.
카탈로그 만들기 의 지침에 따라 Open Catalog 계정에서 외부 카탈로그를 생성합니다. 외부 카탈로그에 대해 다음 설정이 구성되어 있는지 확인합니다.
External 토글이 활성화됩니다.
Default base location 은 1단계: 외부 볼륨 만들기 에서 생성한 외부 볼륨의
STORAGE_BASE_URL
과 일치합니다.
Open Catalog 는 Snowflake 관리 테이블을 이 외부 카탈로그에 동기화합니다.
아직 Snowflake에 대한 서비스 연결이 없는 경우 서비스 연결 구성 의 지침에 따라 Open Catalog 계정에서 Snowflake 엔진에 대한 연결을 생성합니다.
외부 카탈로그에 액세스할 수 있는 권한이 있는 카탈로그 역할을 구성합니다. 지침은 카탈로그에 권한 부여하기 섹션을 참조하십시오.
카탈로그 역할에는 카탈로그에 대한 다음 권한이 있어야 합니다.
TABLE_CREATE
TABLE_WRITE_PROPERTIES
TABLE_DROP
NAMESPACE_CREATE
NAMESPACE_DROP
카탈로그 역할에 이러한 각 권한을 부여하거나 이러한 권한이 포함된 CATALOG_MANAGE_CONTENT 권한을 부여할 수 있습니다. 자세한 내용은 Snowflake Open Catalog의 카탈로그 권한 섹션을 참조하십시오.
서비스 연결에 대한 기본 역할에 카탈로그 역할을 연결합니다. 이를 통해 서비스 연결이 카탈로그에 액세스할 수 있습니다. 지침은 기본 역할에 카탈로그 역할 부여 섹션을 참조하십시오.
3단계: Open Catalog 에 대한 카탈로그 통합 만들기¶
CREATE CATALOG INTEGRATION(Snowflake Open Catalog) 명령을 사용하여 Open Catalog 에 대한 카탈로그 통합을 생성합니다. WAREHOUSE의 경우 Open Catalog 계정에서 구성한 외부 카탈로그의 이름을 지정합니다.
카탈로그 통합 생성과 관련된 문제를 해결하려면 Open Catalog에 대한 카탈로그 통합을 생성할 수 없습니다. 섹션을 참조하십시오.
CREATE OR REPLACE CATALOG INTEGRATION my_open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://myAccount.snowflakecomputing.com/polaris/api/catalog'
WAREHOUSE = 'myOpenCatalogExternalCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'myClientId'
OAUTH_CLIENT_SECRET = 'myClientSecret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
참고
이 카탈로그 통합을 사용하면 하나 이상의 Snowflake 관리 테이블을 동기화할 수 있습니다.
4단계: Snowflake 관리 테이블 만들기¶
CREATE ICEBERG TABLE(Iceberg 카탈로그로서의 Snowflake) 명령을 사용하여 Snowflake 관리 Iceberg 테이블을 생성합니다.
CATALOG_SYNC 매개 변수의 경우 Open Catalog 에 대한 카탈로그 통합 이름을 지정합니다.
Snowflake 관리 테이블 생성과 관련된 문제를 해결하려면 Snowflake 관리 테이블을 생성할 수 없습니다. 섹션을 참조하십시오.
CREATE OR REPLACE ICEBERG TABLE my_managed_iceberg_table (col1 INT)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'my_external_volume'
BASE_LOCATION = 'my_managed_iceberg_table'
CATALOG_SYNC = 'my_open_catalog_int';
Snowflake에서 테이블을 수정하면 변경 사항이 Open Catalog 계정의 외부 카탈로그와 자동으로 동기화됩니다. Apache Spark™와 같은 다른 엔진은 Open Catalog 에 연결하여 테이블을 쿼리할 수 있습니다.