Локальная файловая система#

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.

Конфигурация#

Параметр

Описание

root-path

Путь, относительно которого будет происходить разрешение путей к файлам. Можно передать абсолютный или относительный путь. Относительный путь будет разрешен относительно рабочей директории каталога. Указанный путь должен существовать и быть директорией.

Пример интеграции с HDFS#

В данном примере мы развернем HDFS и настроим подключение к нему из CedrusData Catalog.
Мы будем использовать специальный Docker-образ Hadoop, который является частью тестовой инфраструктуры Trino. Данный образ запускает внутри себя множество сервисов Hadoop, в том числе HDFS. Скачивание образа может занять некоторое время.

  1. Убедитесь, что у вас установлен Docker Server, и команда docker не требует sudo

  2. Запустите 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
    
  3. Создайте директорию, относительно которой будет происходить разрешение путей:

    mkdir data/local
    
  4. Создайте локальную файловую систему

    docker exec -it example-catalog catalog file-system create \
      --file-system-name local \
      --type local \
      -p root-path=localfs
    
  5. Создайте произвольный файл, и убедитесь, что каталог может получить статус объекта с помощью команды 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   |
    +--------+
    
  6. (при необходимости) Остановите контейнер и удалите ненужные ресурсы:

    docker rm -f example-catalog
    rm -rf data