Локальное развертывание Apache Iceberg с помощью CedrusData Catalog#
Данное руководство показывает, как можно быстро развернуть тестовое окружение для Apache Iceberg, где хранилищем выступает локальная файловая система, а каталогом — CedrusData Catalog, запущенный в embedded режиме.
Создайте директорию, в которой будут находиться файлы Iceberg:
mkdir -p data/iceberg
Запустите Docker-образ CedrusData. В данной команде мы задаем переменную окружения
CATALOG_MANAGEMENT=cedrusdata_dynamic
, чтобы создавать каталоги динамически. Мы также задаем переменную окруженияCEDRUSDATA_CATALOG_COORDINATOR_MODE=embedded
, чтобы запустить CedrusData Catalog в embedded режиме. Наконец, мы сопоставляем директорию контейнера/data/trino
директории хостаdata
. Таким образом, записанные контейнером файлы Iceberg будут доступны на хосте.docker run -d --name example-cedrusdata \ -e CATALOG_MANAGEMENT=cedrusdata_dynamic \ -e CEDRUSDATA_CATALOG_COORDINATOR_MODE=embedded \ -p 8080:8080 \ -v ${PWD}/data:/data/trino \ cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata:458-4
В процессе запуска CedrusData, контейнер также запустит CedrusData Catalog. В CedrusData Catalog будет автоматически создан логический каталог
local
, который работает с файловой системой, разрешая пути относительно директорииdata/iceberg
. Данное поведение детально разъяснено в документации embedded-режима CedrusData Catalog.Откройте web-интерфейс CedrusData по адресу http://localhost:8080/cedrus-ui, и введите произвольное имя пользователя.
Создайте каталог Iceberg, который будет работать со встроенным CedrusData Catalog и локальной файловой системой:
CREATE CATALOG ice USING iceberg WITH ( "iceberg.catalog.type" = 'CEDRUSDATA_CATALOG', "iceberg.cedrusdata-catalog.catalog-name" = 'local', "cedrusdata.fs.native-local.enabled" = 'true', "cedrusdata.local.root-path" = 'iceberg' );
Создайте тестовую таблицу Iceberg и наполните ее данными. После этого проанализируйте содержимое директории
data/iceberg
.CREATE SCHEMA IF NOT EXISTS ice.my_schema; CREATE TABLE IF NOT EXISTS ice.my_schema.my_table(c1 int, c2 VARCHAR); INSERT INTO ice.my_schema.my_table VALUES (1, 'Hello, Iceberg!'); SELECT * FROM ice.my_schema.my_table;