КраткоПрактическое пошаговое руководство по выполнению запросов к таблицам в озерах данных, их ускорению с помощью MergeTree и обратной записи результатов в Iceberg. Во всех шагах используются общедоступные наборы данных, и они работают как в Cloud, так и в OSS.
Запрашивайте данные Iceberg напрямую
Самый быстрый способ начать — использовать табличную функциюicebergS3(): укажите путь к таблице Iceberg в S3 и сразу выполняйте запросы — без какой-либо настройки.Проверьте схему:deltaLake(), hudi() и paimon().Узнать больше: В разделе Прямые запросы к открытым табличным форматам рассматриваются все четыре формата, варианты для cluster при распределённом чтении и варианты хранилища (S3, Azure, HDFS, локальное).Создайте постоянную таблицу
Для повторного доступа создайте таблицу с движком таблицы Iceberg, чтобы не указывать путь каждый раз. Данные остаются в S3 — ничего не дублируется:Подключение к каталогу
Большинство организаций управляют таблицами Iceberg через каталог данных, чтобы централизованно хранить метаданные таблиц и упростить поиск данных. ClickHouse поддерживает подключение к вашему каталогу с помощью движка базы данныхDataLakeCatalog, предоставляя все таблицы каталога в виде базы данных ClickHouse. Это более масштабируемый подход: по мере создания новых таблиц Iceberg они будут сразу доступны в ClickHouse без дополнительной настройки.Вот пример подключения к AWS Glue:Обратные кавычки вокруг
<database>.<table> обязательны, поскольку ClickHouse изначально не поддерживает более одного пространства имен.Выполните запрос
Независимо от того, какой метод вы использовали выше — table function, движок таблицы или каталог, — во всех случаях используется один и тот же ClickHouse SQL:FROM. Все функции ClickHouse SQL, JOIN и агрегации работают одинаково независимо от источника данных.Загрузите подмножество данных в ClickHouse
Выполнять запросы напрямую к Iceberg удобно, но производительность ограничена пропускной способностью сети и структурой файлов. Для аналитических рабочих нагрузок загрузите данные в таблицу MergeTree.Сначала выполните к таблице Iceberg запрос с фильтрацией, чтобы получить базовый уровень для сравнения:counterid, — его выполнение займет несколько секунд.Теперь создайте таблицу MergeTree и загрузите данные:counterid — первый столбец в ключе ORDER BY, разреженный первичный индекс ClickHouse сразу переходит к нужным гранулам, считывая только строки для counterid = 38 вместо сканирования всех 100 миллионов строк. Это дает заметный прирост скорости.В руководстве ускорение аналитики эта тема рассматривается подробнее: типы LowCardinality, полнотекстовые индексы и оптимизированные ключи сортировки дают примерно 40-кратный прирост производительности на наборе данных из 283 миллионов строк.Узнайте больше: в руководстве Ускорение аналитики с MergeTree рассматриваются оптимизация схемы, полнотекстовая индексация и полное сравнение производительности до и после.Запись обратно в Iceberg
ClickHouse также может записывать данные обратно в таблицы Iceberg, что позволяет реализовать сценарии обратного ETL: публиковать агрегированные результаты или подмножества данных для использования в других инструментах (Spark, Trino, DuckDB и т. д.).Создайте таблицу Iceberg для вывода:Следующие шаги
- Прямое выполнение запросов — Все четыре формата, варианты кластеров, движки таблиц, кэширование
- Подключение к каталогам — Полное руководство по Unity Catalog с Delta и Iceberg
- Ускорение аналитики — Оптимизация схемы, индексирование, демонстрация ускорения примерно в 40 раз
- Запись в озера данных — Прямая запись, агрегированная запись, сопоставление типов
- Матрица поддержки — Сравнение возможностей в разных форматах и системах хранения