ClickHouse поддерживает интеграцию с несколькими каталогами (Unity, Glue, Polaris и т. д.). В этом руководстве показано, как выполнять запросы к таблицам Iceberg в каталоге среды выполнения Lakehouse, также известном как BigLake Metastore, через ClickHouse.
Поскольку эта возможность находится в статусе бета, её нужно включить с помощью:
SET allow_database_iceberg = 1;
Предварительные требования
Перед созданием подключения из ClickHouse к каталогу среды выполнения Lakehouse (BigLake Metastore) убедитесь, что у вас есть:
- Проект Google Cloud с включенным каталогом среды выполнения Lakehouse
- Учетные данные Application Default (OAuth client ID и client secret) для приложения, созданные через Google Cloud Console
- Токен обновления, полученный после прохождения OAuth-потока с соответствующими областями доступа (например,
https://www.googleapis.com/auth/bigquery и областью доступа к хранилищу для GCS)
- Путь к хранилищу: бакет GCS (и необязательный префикс), где хранятся ваши таблицы, например
gs://your-bucket или gs://your-bucket/prefix
Создание подключения между каталогом среды выполнения Lakehouse и ClickHouse
После настройки учетных данных OAuth создайте в ClickHouse базу данных, использующую движок базы данных 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>';
Запросы к таблицам каталога среды выполнения Lakehouse из ClickHouse
После создания подключения можно выполнять запросы к таблицам, зарегистрированным в каталоге среды выполнения Lakehouse.
USE LAKEHOUSE_RUNTIME_CATALOG;
SHOW TABLES;
Пример вывода:
┌─name──────────────────────────────────────┐
│lakehouse_runtime_catalog.my_iceberg_table │
└───────────────────────────────────────────┘
SELECT count(*) FROM `lakehouse_runtime_catalog.my_iceberg_table`;
Обратные кавычки обязательныОбратные кавычки обязательны, потому что ClickHouse не поддерживает работу более чем с одним пространством имен.
Чтобы просмотреть определение таблицы:
SHOW CREATE TABLE `lakehouse_runtime_catalog.my_iceberg_table`;
Загрузка данных из Lakehouse в ClickHouse
Чтобы загрузить данные из таблицы каталога среды выполнения Lakehouse в локальную таблицу ClickHouse для ускорения повторных запросов, создайте таблицу MergeTree и выполните вставку из каталога:
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`;
После первоначальной загрузки выполняйте запросы к clickhouse_table, чтобы снизить задержку. При необходимости повторно запустите INSERT INTO ... SELECT, чтобы обновить данные из BigLake. Последнее изменение 10 июня 2026 г.