Как пути работают для данных, управляемых каталогом Unity?
В этой статье описываются ограничения на перекрытие путей в каталоге Unity, приводятся шаблоны доступа к данным с использованием путей для файлов данных в объектах каталога Unity, а также поясняется, как каталог Unity управляет путями для таблиц и томов.
Примечание.
Тома поддерживаются только в Databricks Runtime 13.3 LTS и более поздних версиях. В версиях Databricks Runtime 12.2 LTS и ниже операции с путями /Volumes
могут выполняться успешно, но данные будут записываться только на временные диски хранения, подключенные к вычислительным кластерам, вместо сохранения данных на томах Unity Catalog, как ожидалось.
Пути для объектов каталога Unity не могут перекрываться
Каталог Unity применяет управление данными, предотвращая перекрытие управляемых каталогов данных. Каталог Unity применяет следующие правила:
- Внешние расположения не могут перекрываться другими внешними расположениями.
- Таблицы и тома хранят файлы данных во внешних расположениях или основном расположении метахранилища.
- Томам не разрешается пересекаться с другими томами.
- Таблицы не могут перекрываться другими таблицами.
- Таблицы и тома не могут перекрываться друг с другом.
- Управляемые расположения хранилища не могут перекрываться друг с другом. См. Укажите расположение управляемого хранилища в каталоге Unity.
- Внешние тома не могут пересекаться с расположениями управляемого хранилища.
- Внешние таблицы не могут перекрываться с управляемым хранилищем.
Эти правила означают, что в каталоге Unity существуют следующие ограничения:
- Нельзя определить внешнее расположение в другом внешнем расположении.
- Невозможно определить том в другом томе.
- Нельзя определить таблицу в другой таблице.
- Нельзя определить таблицу в файлах данных или каталогах в томе.
- Невозможно определить том в каталоге в таблице.
Примечание.
Вы всегда можете использовать доступ по пути для записи или чтения файлов данных из разделов, включая Delta Lake. Эти файлы данных нельзя зарегистрировать в качестве таблиц в хранилище метаданных каталога Unity.
Пути для управляемых таблиц и управляемых томов полностью управляются каталогом Unity
При создании управляемой таблицы или управляемого тома каталог Unity создает новый каталог в расположении хранилища, настроенном каталогом Unity, связанном с содержащей схемой. Имя этого каталога создается случайным образом, чтобы избежать любого потенциального столкновения с другими каталогами, которые уже присутствуют.
Это поведение отличается от того, как хранилище метаданных Hive создает управляемые таблицы. Databricks рекомендует всегда использовать для работы с управляемыми таблицами каталога Unity имена таблиц, а для управляемых томов каталога Unity — пути томов.
Пути для внешних таблиц и внешних томов управляются каталогом Unity
При создании внешней таблицы или внешнего тома необходимо указать путь во внешнем расположении, управляемом каталогом Unity.
Внимание
Databricks рекомендует никогда не создавать внешний том или внешнюю таблицу в корне внешнего расположения. Вместо этого создайте внешние тома и внешние таблицы в вложенных каталогах в пределах внешнего расположения. Эти рекомендации должны помочь избежать случайного перекрытия путей. См.: Пути к объектам каталога Unity не могут перекрываться.
Для удобства использования Databricks рекомендует взаимодействовать с внешними таблицами каталога Unity, используя имена таблиц и внешние тома каталога Unity с помощью путей томов.
В качестве альтернативы пользователи с достаточными привилегиями в соответствующем объекте Unity Catalog могут получить доступ к данным из внешней таблицы или внешнего тома, используя полностью квалифицированный путь к облачному хранилищу объектов.
Внимание
Каталог Unity управляет всеми привилегиями для доступа с помощью облачных URI к данным, связанным с внешними таблицами или внешними томами. Эти привилегии переопределяют все привилегии, связанные с внешними расположениями. См. привилегии каталога Unity и защищаемые объекты
Как получить доступ к данным в каталоге Unity?
Объекты каталога Unity предоставляют доступ к данным через идентификаторы объектов, пути тома или облачные URI. Эти значения можно использовать для доступа к данным, связанным с томами и таблицами.
К таблицам каталога Unity обращаются с помощью трехуровневого идентификатора со следующим шаблоном:
<catalog_name>.<schema_name>.<table_name>
Что такое пути к файлам тома в каталоге Unity?
Тома предоставляют путь к файлам данных со следующим шаблоном:
/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>
Облачные URI требуют, чтобы пользователи предоставили драйвер, идентификатор контейнера хранилища и полный путь к целевым файлам, как показано в следующем примере:
abfss://<container_name>@<storage_account>.dfs.core.windows.net/<path>
В следующей таблице показаны методы доступа, разрешенные для объектов каталога Unity:
Object | Идентификатор объекта | Путь к файлу | URI облака |
---|---|---|---|
Внешнее расположение | no | no | yes |
Управляемая таблица | yes | no | no |
Внешняя таблица | yes | no | yes |
Управляемый том | no | yes | no |
Внешний том | no | yes | yes |
Примечание.
Тома каталога Unity используют идентификаторы объектов трехуровневого уровня со следующим шаблоном для команд управления (например, CREATE VOLUME
и DROP VOLUME
):
<catalog_name>.<schema_name>.<volume_name>
Чтобы фактически работать с файлами в томах, необходимо использовать путь доступа.