Интеграция с каталогом SeaweedFS работает только с таблицами Iceberg.
- Единый сервис — метаданные каталога и данные Parquet обслуживаются одним процессом без отдельной базы данных метаданных
- Соответствие REST API спецификации REST-каталога Iceberg
- Обслуживание на стороне сервера — автоматическая компактация файлов Parquet и удаление устаревших снимков без внешнего сервиса обслуживания
Поскольку эта возможность экспериментальная, её необходимо включить с помощью:
SET allow_experimental_database_iceberg = 1;Настройка локальной среды разработки
Предварительные требования
- Docker и Docker Compose: убедитесь, что Docker установлен и запущен.
- Версии: SeaweedFS 4.42 или новее; ClickHouse 26.8 или новее (версии начиная с 25.8 поддерживают чтение и вставку, но для создания таблиц через каталог требуется версия 26.8).
- Python с PyIceberg (необязательно): используется ниже для заполнения демонстрационных данных.
Настройка локального каталога SeaweedFS
s3config.json с учётными данными для шлюза S3 и каталога:
docker-compose.yml со следующей конфигурацией:
mini запускает весь стек SeaweedFS в одном контейнере. Флаг -tableBucket=analytics заранее создаёт бакет S3 Tables с именем analytics, который используется в качестве хранилища Iceberg.
Шаг 3: Выполните следующую команду, чтобы запустить сервисы:
Заполнение тестовыми данными
pip install pyiceberg pyarrow):
Подключение к локальному каталогу SeaweedFS
catalog_credential и oauth_server_uri используются для аутентификации в самом каталоге по потоку OAuth2 Client Credentials. SeaweedFS принимает один и тот же ключ доступа и секретный ключ в обоих случаях.
Выполнение запросов к таблицам каталога SeaweedFS в ClickHouse
Требуются обратные кавычкиОбратные кавычки требуются, поскольку ClickHouse не поддерживает более одного пространства имен.
Создание таблиц и запись данных из ClickHouse
IcebergS3 задает путь в хранилище для новой таблицы, а write_full_path_in_iceberg_metadata указывает ClickHouse зарегистрировать в каталоге полный путь к таблице.
Для создания таблиц через каталог требуется ClickHouse версии 26.8 или выше. Версии с 26.4 по 26.7 записывают файлы таблицы до регистрации пространства имен, что SeaweedFS отклоняет, если пространство имен еще не существует в каталоге; версии до 26.4, по-видимому, выполняются успешно, но файлы таблицы записываются в объектное хранилище без регистрации в каталоге.
Загрузка данных из озера данных в ClickHouse
INSERT INTO SELECT: