Движок таблиц Iceberg
Мы рекомендуем использовать Функцию таблицы Iceberg для работы с данными Iceberg в ClickHouse. В данный момент Функция таблицы Iceberg предоставляет достаточную функциональность, предлагая частичный интерфейс только для чтения для таблиц Iceberg.
Движок таблиц Iceberg доступен, но может иметь ограничения. ClickHouse изначально не был разработан для поддержки таблиц с внешне изменяющимися схемами, что может повлиять на функциональность движка таблиц Iceberg. В результате некоторые функции, которые работают с обычными таблицами, могут быть недоступны или функционировать неправильно, особенно при использовании старого анализатора.
Для оптимальной совместимости мы рекомендуем использовать Функцию таблицы Iceberg, пока мы продолжаем улучшать поддержку движка таблиц Iceberg.
Этот движок обеспечивает только для чтения интеграцию с существующими таблицами Apache Iceberg в Amazon S3, Azure, HDFS и локально хранимыми таблицами.
Создание таблицы
Обратите внимание, что таблица Iceberg должна уже существовать в хранилище, эта команда не принимает параметры DDL для создания новой таблицы.
Аргументы движка
Описание аргументов совпадает с описанием аргументов в движках S3
, AzureBlobStorage
, HDFS
и File
соответственно.
format
обозначает формат файлов данных в таблице Iceberg.
Параметры движка могут быть указаны с использованием Именованных коллекций
Пример
Используя именованные коллекции:
Псевдонимы
Движок таблиц Iceberg
сейчас является псевдонимом для IcebergS3
.
Эволюция схемы В данный момент с помощью CH вы можете читать таблицы Iceberg, схема которых изменялась со временем. В настоящее время мы поддерживаем чтение таблиц, в которых были добавлены и удалены колонки, и изменён их порядок. Вы также можете изменить колонку, в которой значение обязательно, на колонку, где NULL разрешён. Кроме того, мы поддерживаем допустимые преобразования типов для простых типов, а именно:
- int -> long
- float -> double
- decimal(P, S) -> decimal(P', S), где P' > P.
В данный момент невозможно изменить вложенные структуры или типы элементов внутри массивов и карт.
Чтобы прочитать таблицу, схема которой изменилась после ее создания с динамическим определением схемы, установите allow_dynamic_metadata_for_data_lakes = true при создании таблицы.
Отсечение партиций
ClickHouse поддерживает отсечение партиций во время запросов SELECT для таблиц Iceberg, что помогает оптимизировать производительность запросов, пропуская нерелевантные файлы данных. В данный момент это работает только с преобразованиями идентичности и временными преобразованиями (час, день, месяц, год). Чтобы включить отсечение партиций, установите use_iceberg_partition_pruning = 1
.
Кэширование данных
Движок таблиц Iceberg
и функция таблицы поддерживают кэширование данных так же, как S3
, AzureBlobStorage
, HDFS
хранилища. См. здесь.