Локальная файловая система#
CedrusData Catalog позволяет сохранять файлы Iceberg в локальной файловой системе каталога.
Возможна работа с любыми файловыми системами, смонтированными на сервере CedrusData Catalog. Например, вы можете хранить файлы Iceberg на локальном диске, в памяти (tmpfs), сетевой файловой системе (NFS) или произвольной файловой системе, смонтированной через FUSE.
Разрешение путей#
При работе с локальной файловой системой, все пути должны начинаться с local:///
.
Обратите внимание на третий обязательный символ /
.
Он указывает, что разрешение пути происходит от корня файловой системы, который определяется параметром root-path
.
Например, если корнем файловой системы является директория /home/user/data
, то путь local:///path/to/file.parquet
будет разрешен в /home/user/data/path/to/file.parquet
.
Конфигурация#
Параметр |
Описание |
---|---|
|
Путь, относительно которого будет происходить разрешение путей к файлам. Можно передать абсолютный или относительный путь. Относительный путь будет разрешен относительно рабочей директории каталога. Указанный путь должен существовать и быть директорией. |
Пример интеграции с HDFS#
В данном примере мы развернем HDFS и настроим подключение к нему из CedrusData Catalog.
Мы будем использовать специальный Docker-образ Hadoop,
который является частью тестовой инфраструктуры Trino. Данный образ запускает внутри себя множество сервисов Hadoop, в том числе HDFS.
Скачивание образа может занять некоторое время.
Убедитесь, что у вас установлен Docker Server, и команда
docker
не требуетsudo
Запустите Docker-контейнер CedrusData Catalog, осуществив mount директории data на директорию контейнера
/data/catalog
:docker run -d \ --name example-catalog \ -v $PWD/data:/data/catalog \ cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata-catalog:458-4
Создайте директорию, относительно которой будет происходить разрешение путей:
mkdir data/local
Создайте локальную файловую систему
docker exec -it example-catalog catalog file-system create \ --file-system-name local \ --type local \ -p root-path=localfs
Создайте произвольный файл, и убедитесь, что каталог может получить статус объекта с помощью команды file-system check:
touch data/local/test.file docker exec -it example-catalog catalog file-system check \ --file-system-name local \ --location local:///test.file
+--------+ | exists | +--------+ | true | +--------+
(при необходимости) Остановите контейнер и удалите ненужные ресурсы:
docker rm -f example-catalog rm -rf data