ClickHouse prend en charge l’intégration avec plusieurs catalogues (Unity, Glue, Polaris, etc.). Dans ce guide, nous vous expliquons comment interroger vos données avec ClickHouse et l’Apache catalogue Polaris. Apache Polaris prend en charge les tables Iceberg et les tables Delta (via les tables génériques). Cette intégration ne prend en charge que les tables Iceberg pour l’instant.
Prérequis
Pour vous connecter au catalogue Polaris, vous aurez besoin des éléments suivants :
- Snowflake Open Catalog (Polaris hébergé) ou catalogue Polaris autohébergé
- L’URI de votre catalogue Polaris (par exemple,
https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1ouhttp://polaris:8181/api/catalog/v1/oauth/tokens) - Les identifiants du catalogue (ID client et secret client)
- L’URI des tokens OAuth pour votre instance Polaris
- Le endpoint de stockage de l’object store où se trouvent vos données Iceberg (par exemple, S3)
- ClickHouse version 26.1+
Pour Open Catalog, l’offre Polaris managée de Snowflake, votre URI inclura /polaris, tandis que pour une instance autohébergée, ce ne sera pas nécessairement le cas.
Création d’une connexion entre Polaris et ClickHouse
Créez une base de données qui relie ClickHouse à votre catalogue 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>'Interroger le catalogue Polaris avec ClickHouse
Une fois la connexion établie, vous pouvez interroger Polaris :
USE polaris_catalog;
SHOW TABLES;Pour interroger une table :
SELECT count(*) FROM `polaris_db.my_iceberg_table`;Pour examiner le DDL de la table :
SHOW CREATE TABLE `polaris_db.my_iceberg_table`;Chargement de données depuis Polaris dans ClickHouse
Pour charger des données depuis Polaris dans une table ClickHouse, créez la table cible avec le schéma souhaité, puis insérez les données depuis la table Polaris :
CREATE TABLE my_clickhouse_table
(
-- définissez les colonnes pour qu’elles correspondent à votre 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`;