ClickHouse prend en charge l’intégration avec plusieurs catalogues (Unity, Glue, Polaris, etc.). Ce guide vous explique comment interroger vos tables Iceberg dans catalogue d’exécution du lakehouse aka BigLake Metastore via ClickHouse.
Prérequis
Avant de créer une connexion entre ClickHouse et le catalogue d’exécution du lakehouse (BigLake Metastore), assurez-vous de disposer des éléments suivants :
- Un projet Google Cloud avec le catalogue d’exécution du lakehouse activé
- Des identifiants Application Default (ID client OAuth et secret client) pour une application, créés via Google Cloud Console
- Un jeton d'actualisation obtenu en suivant le flux OAuth avec les scopes appropriés (par ex.
https://www.googleapis.com/auth/bigqueryet le scope de stockage pour GCS) - Un chemin de warehouse : un bucket GCS (et un préfixe facultatif) où vos tables sont stockées, par ex.
gs://your-bucketougs://your-bucket/prefix
Créer une connexion entre le catalogue d’exécution du lakehouse et ClickHouse
Une fois les identifiants OAuth configurés, créez une base de données dans ClickHouse qui utilise le moteur de base de données DataLakeCatalog :
SET allow_database_iceberg = 1;
CREATE DATABASE lakehouse_runtime_catalog
ENGINE = DataLakeCatalog('https://biglake.googleapis.com/iceberg/v1/restcatalog')
SETTINGS
catalog_type = 'biglake',
google_adc_client_id = '<client-id>',
google_adc_client_secret = '<client-secret>',
google_adc_refresh_token = '<refresh-token>',
google_adc_quota_project_id = '<gcp-project-id>',
warehouse = 'gs://<bucket_name>/<optional-prefix>';Interroger les tables du catalogue d’exécution du lakehouse avec ClickHouse
Une fois la connexion établie, vous pouvez interroger les tables enregistrées dans le catalogue d’exécution du lakehouse.
USE LAKEHOUSE_RUNTIME_CATALOG;
SHOW TABLES;Exemple de sortie :
┌─name──────────────────────────────────────┐
│lakehouse_runtime_catalog.my_iceberg_table │
└───────────────────────────────────────────┘SELECT count(*) FROM `lakehouse_runtime_catalog.my_iceberg_table`;Pour afficher la définition de la table :
SHOW CREATE TABLE `lakehouse_runtime_catalog.my_iceberg_table`;Chargement de données du Lakehouse dans ClickHouse
Pour charger les données d'une table du Lakehouse runtime catalog dans une table ClickHouse locale afin d'accélérer les requêtes répétées, créez une table MergeTree et insérez les données depuis le catalogue :
CREATE TABLE clickhouse_table
(
`id` Int64,
`event_time` DateTime64(3),
`user_id` String,
`payload` String
)
ENGINE = MergeTree
ORDER BY (event_time, id);
INSERT INTO local_events
SELECT * FROM lakehouse_runtime_catalog.`icebench.my_iceberg_table`;Après le chargement initial, interrogez clickhouse_table afin de réduire la latence. Réexécutez INSERT INTO ... SELECT pour actualiser les données depuis BigLake lorsque nécessaire.