ClickHouse admite la integración con múltiples catálogos (Unity, Glue, Polaris, etc.). Esta guía le mostrará cómo consultar sus tablas Iceberg en catálogo de runtime de Lakehouse, también conocido como BigLake Metastore mediante ClickHouse.
Requisitos previos
Antes de crear una conexión de ClickHouse a catálogo de runtime de Lakehouse (BigLake Metastore), asegúrate de contar con lo siguiente:
- Un proyecto de Google Cloud con catálogo de runtime de Lakehouse habilitado
- Credenciales predeterminadas de la aplicación (ID de cliente OAuth y secreto de cliente) para una aplicación, creadas a través de Google Cloud Console
- Un token de actualización obtenido al completar el flujo de OAuth con los alcances adecuados (por ejemplo,
https://www.googleapis.com/auth/bigqueryy el alcance de almacenamiento para GCS) - Una ruta de warehouse: un bucket de GCS (y un prefijo opcional) donde se almacenan tus tablas, por ejemplo,
gs://your-bucketogs://your-bucket/prefix
Crear una conexión entre catálogo de runtime de Lakehouse y ClickHouse
Con las credenciales de OAuth ya configuradas, cree una base de datos en ClickHouse que utilice el motor de base de datos 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>';Consultar tablas del catálogo de runtime de Lakehouse desde ClickHouse
Una vez creada la conexión, puedes consultar las tablas registradas en el catálogo de runtime de Lakehouse.
USE LAKEHOUSE_RUNTIME_CATALOG;
SHOW TABLES;Salida de ejemplo:
┌─name──────────────────────────────────────┐
│lakehouse_runtime_catalog.my_iceberg_table │
└───────────────────────────────────────────┘SELECT count(*) FROM `lakehouse_runtime_catalog.my_iceberg_table`;Para ver la definición de la tabla:
SHOW CREATE TABLE `lakehouse_runtime_catalog.my_iceberg_table`;Cargar datos desde Lakehouse a ClickHouse
Para cargar datos desde una tabla del catálogo de runtime de Lakehouse en una tabla local de ClickHouse y acelerar las consultas repetidas, cree una tabla MergeTree e inserte los datos desde el catálogo:
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`;Después de la carga inicial, consulta clickhouse_table para reducir la latencia. Vuelve a ejecutar INSERT INTO ... SELECT para actualizar los datos de BigLake cuando sea necesario.