본문으로 바로가기
본문으로 바로가기

Polaris 카탈로그

Beta feature. Learn more.

ClickHouse는 여러 catalog(Unity, Glue, Polaris 등)과의 통합을 지원합니다. 이 가이드에서는 ClickHouse와 Apache Polaris Catalog를 사용하여 데이터를 쿼리하는 단계를 설명합니다. Apache Polaris는 Iceberg 테이블과 Delta Tables(Generic Tables 경유)를 지원합니다. 현재 이 통합은 Iceberg 테이블만 지원합니다.

참고

이 기능은 실험적이므로 다음을 사용하여 활성화해야 합니다. SET allow_experimental_database_unity_catalog = 1;

사전 요구 사항

Polaris 카탈로그에 연결하려면 다음이 필요합니다.

  • Snowflake Open Catalog(호스팅형 Polaris) 또는 자체 호스팅 Polaris Catalog
  • Polaris 카탈로그 URI(예: https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1 또는 http://polaris:8181/api/catalog/v1/oauth/tokens)
  • 카탈로그 자격 증명(client ID 및 client secret)
  • Polaris 인스턴스의 OAuth token URI
  • Iceberg 데이터가 저장된 객체 스토리지의 storage endpoint(예: S3)
  • ClickHouse 버전 26.1+

Snowflake의 관리형 Polaris 서비스인 Open Catalog의 경우 URI에 /polaris가 포함되지만, 자체 호스팅 환경에서는 포함되지 않을 수 있습니다.

Polaris와 ClickHouse 간 연결 생성

ClickHouse를 Polaris 카탈로그에 연결하는 데이터베이스를 생성합니다.

CREATE DATABASE polaris_catalog
ENGINE = DataLakeCatalog('https://<catalog_uri>/api/catalog/v1')
SETTINGS
    catalog_type = 'rest',
    catalog_credential = '<client-id>:<client-secret>',
    warehouse = 'snowflake',
    auth_scope = 'PRINCIPAL_ROLE:ALL',
    oauth_server_uri = 'https://<catalog_uri>/api/catalog/v1/oauth/tokens',
    storage_endpoint = '<storage_endpoint>'

ClickHouse를 사용해 Polaris 카탈로그 쿼리

연결이 설정되면 Polaris를 쿼리할 수 있습니다.

USE polaris_catalog;
SHOW TABLES;

테이블을 쿼리하려면 다음을 실행합니다.

SELECT count(*) FROM `polaris_db.my_iceberg_table`;
참고

예를 들어 schema.table과 같이 백틱이 필요합니다.

테이블 DDL을 확인하려면 다음을 실행합니다.

SHOW CREATE TABLE `polaris_db.my_iceberg_table`;

Polaris에서 ClickHouse로 데이터 로드

Polaris에서 ClickHouse 테이블로 데이터를 로드하려면, 원하는 스키마로 대상 테이블을 생성한 다음 Polaris 테이블에서 데이터를 삽입합니다.

CREATE TABLE my_clickhouse_table
(
    -- Iceberg 테이블에 맞게 컬럼을 정의합니다
    `id` Int64,
    `name` String,
    `event_time` DateTime64(3)
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO my_clickhouse_table
SELECT * FROM polaris_catalog.`polaris_db.my_iceberg_table`;