CREATE CATALOG#

Синтаксис#

CREATE CATALOG [ IF NOT EXISTS ] 
catalog_name
USING connector_name
[ WITH ( property_name = expression [, ...] ) ]

Предварительные требования#

Для работы данной команды необходимо сначала включить поддержку динамических каталогов в файле config.properties. Например:

catalog.management=cedrusdata_dynamic

Описание#

Создает новый каталог, используя заданный коннектор.

Необязательное выражение IF NOT EXISTS позволяет завершить выполнение команды без ошибки, если каталог уже существует. Существующий каталог при этом не будет пересоздан.

Необязательное выражение WITH позволяет задать свойства каталога. При указании имени свойства можно использовать двойные кавычки для корректной обработки специальных символов, например -. Значение свойства необходимо передавать в виде строкового литерала в одинарных кавычках (в том числе для числовых и булевых типов). Список доступных свойств можно найти в документации соответствующего коннектора.

Предупреждение

Команды CREATE CATALOG видны в истории запросов в Web UI. Таким образом пользователи UI могут увидеть свойства коннектора, включая чувствительную информацию (например, пароли). Чтобы избежать раскрытия чувствительной информации, используйте секреты.

Создание каталога вернет ошибку в следующих случаях:

  1. Отсутствует обязательное свойство коннектора.

  2. Свойство коннектора имеет недопустимое имя или значение.

  3. Свойство коннектора ссылается на несуществующую переменную окружения.

  4. Коннектор с таким же именем, который ранее был удален командой DROP CATALOG, все еще используется текущими запросами.

Использование переменных окружения#

Вы можете ссылаться на переменные окружения в значениях свойств с помощью секретов.

Если вы используете управление динамическими каталогами CedrusData (catalog.management=cedrusdata_dynamic), подстановка переменной окружения будет произведена на каждом узле независимо. Это соответствует семантике работы статических каталогов.

Если вы используете управление динамическими каталогами Trino (catalog.management=dynamic), подстановка переменной окружения будет произведена на координаторе, а worker-узлы переиспользуют подставленное значение.

Выборочное применение свойств#

В некоторых случаях может возникнуть необходимость задать различные свойства каталога на различных узлах. Например, заданное свойство должно быть определено только на координаторе, но не на worker. Если вы используете управление динамическими каталогами CedrusData (catalog.management=cedrusdata_dynamic), вы можете ассоциировать свойства с группами узлов с помощью специального синтаксиса.

Каждый узел может быть ассоциирован с одной или несколькими группами. Группа - это строковое значение. Координатор по всегда включен в группу coordinator. Worker-узлы всегда включены в группу worker. Вы можете задать дополнительные группы узла с помощью параметра конфигурации cedrusdata.catalog.node-groups. Например:

cedrusdata.catalog.node-groups=group1,group2

Чтобы ограничить применение свойства каталога отдельными узлами, укажите перед именем свойства специальный префикс ${CEDRUSDATA_NODE_GROUPS:<имена групп_через_запятую>}.

Примеры#

Создать каталог с именем tpch, используя TPCH коннектор:

CREATE CATALOG tpch USING tpch;

Создать каталог с именем brain, используя Memory коннектор:

CREATE CATALOG brain USING memory
WITH ("memory.max-data-per-node" = '128MB');

Создать каталог с именем example, используя PostgreSQL коннектор и секреты для сокрытия имения пользователя и пароля:

CREATE CATALOG example USING postgresql
WITH (
  "connection-url" = 'jdbc:pg:localhost:5432',
  "connection-user" = '${ENV:POSTGRES_USER}',
  "connection-password" = '${ENV:POSTGRES_PASSWORD}',
  "case-insensitive-name-matching" = 'true'
);

Создать каталог с именем datalake, используя Hive коннектор, с указанием пути к директории локального дискового кэша только на узлах группы worker:

CREATE CATALOG datalake USING hive
WITH (
  ...
  "${CEDRUSDATA_NODE_GROUPS:worker}cedrusdata.hive.data-cache.path" = '/path/to/data/cache',
  ...
);

См. также#