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 = 'default'
  REST_CONFIG = (
    CATALOG_URI = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.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 테이블을 생성합니다.

중요

공개 카탈로그의 액세스 권한이 테이블에 올바르게 적용되도록 하려면 테이블을 만들기 전에 테이블이 특정 조건을 충족하는지 확인하십시오. 이러한 조건은 카탈로그의 디렉터리 구조 계층 구조와 관련이 있습니다. 이러한 조건과 조건을 충족하는 방법에 대한 지침은 Snowflake Open Catalog 설명서의 카탈로그 내용 구성 섹션에 있는 참고 사항을 참조하십시오.

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 에 연결하여 테이블을 쿼리할 수 있습니다.