Перейти к основному содержимому
Перейти к основному содержимому

Каталог Polaris

Beta feature. Learn more.

ClickHouse поддерживает интеграцию с несколькими каталогами (Unity, Glue, Polaris, и т. д.). В этом руководстве мы пошагово покажем, как выполнять запросы к данным с помощью ClickHouse и каталога Apache Polaris. Apache Polaris поддерживает таблицы Iceberg и Delta Tables (через Generic Tables). На данный момент эта интеграция поддерживает только таблицы Iceberg.

Примечание

Поскольку эта функция является экспериментальной, её необходимо включить с помощью: SET allow_experimental_database_unity_catalog = 1;

Предварительные требования

Чтобы подключиться к каталогу Polaris, вам понадобятся:

  • Snowflake Open Catalog (размещённый Polaris) или самостоятельно размещённый Polaris Catalog
  • URI вашего каталога Polaris (например, https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1 или http://polaris:8181/api/catalog/v1/oauth/tokens)
  • Учётные данные каталога (client ID и client secret)
  • URI OAuth-токенов для вашего экземпляра Polaris
  • Конечная точка объектного хранилища, в котором находятся ваши данные Iceberg (например, S3)
  • ClickHouse версии 26.1+

Для Open Catalog, управляемого предложения Polaris от Snowflake, ваш 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>'

Запросы к каталогу Polaris с помощью ClickHouse

После настройки подключения вы можете выполнять запросы к 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, создайте целевую таблицу с нужной схемой, затем выполните insert из таблицы 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`;