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 계정에서 외부 카탈로그 및 서비스 연결을 생성합니다.

  1. 카탈로그 만들기 의 지침에 따라 Open Catalog 계정에서 외부 카탈로그를 생성합니다. 외부 카탈로그에 대해 다음 설정이 구성되어 있는지 확인합니다.

    • External 토글이 활성화됩니다.

    • Default base location1단계: 외부 볼륨 만들기 에서 생성한 외부 볼륨의 STORAGE_BASE_URL 과 일치합니다.

    Open Catalog 는 Snowflake 관리 테이블을 이 외부 카탈로그에 동기화합니다.

  2. 아직 Snowflake에 대한 서비스 연결이 없는 경우 서비스 연결 구성 의 지침에 따라 Open Catalog 계정에서 Snowflake 엔진에 대한 연결을 생성합니다.

  3. 외부 카탈로그에 액세스할 수 있는 권한이 있는 카탈로그 역할을 구성합니다. 지침은 카탈로그에 권한 부여하기 섹션을 참조하십시오.

    카탈로그 역할에는 카탈로그에 대한 다음 권한이 있어야 합니다.

    • TABLE_CREATE

    • TABLE_WRITE_PROPERTIES

    • TABLE_DROP

    • NAMESPACE_CREATE

    • NAMESPACE_DROP

    카탈로그 역할에 이러한 각 권한을 부여하거나 이러한 권한이 포함된 CATALOG_MANAGE_CONTENT 권한을 부여할 수 있습니다. 자세한 내용은 Snowflake Open Catalog의 카탈로그 권한 섹션을 참조하십시오.

  4. 서비스 연결에 대한 기본 역할에 카탈로그 역할을 연결합니다. 이를 통해 서비스 연결이 카탈로그에 액세스할 수 있습니다. 지침은 기본 역할에 카탈로그 역할 부여 섹션을 참조하십시오.

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;
Copy

참고

이 카탈로그 통합을 사용하면 하나 이상의 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';
Copy

Snowflake에서 테이블을 수정하면 변경 사항이 Open Catalog 계정의 외부 카탈로그와 자동으로 동기화됩니다. Apache Spark™와 같은 다른 엔진은 Open Catalog 에 연결하여 테이블을 쿼리할 수 있습니다.