Поделиться через


Что такое тома каталога Unity?

Тома — это объекты каталога Unity, которые обеспечивают управление нетабличными наборами данных. Томы представляют собой логическую единицу хранения в облачном объектном хранилище. Тома предоставляют возможности для доступа к файлам, их хранения, управления ими и упорядочения.

Хотя таблицы обеспечивают управление табличными наборами данных, тома обеспечивают управление для нетабличных наборов данных. Тома можно использовать для хранения и доступа к файлам в любом формате, включая структурированные, полуструктурированные и неструктурированные данные.

Databricks рекомендует использовать тома для регулирования доступа ко всем данным в нетабличной форме. Как и таблицы, тома могут быть управляемыми или внешними.

Внимание

Вы не можете использовать тома в качестве местоположений для таблиц. Тома предназначены только для доступа к данным, использующих пути. Используйте таблицы, если вы хотите работать с табличными данными в каталоге Unity.

Дополнительные сведения о работе с томами см. в следующих статьях:

Примечание.

При работе с томами необходимо использовать хранилище SQL или кластер под управлением Databricks Runtime 13.3 LTS или более поздней версии, если только вы не используете UIs Azure Databricks, например обозреватель каталогов.

Что такое управляемый том?

Управляемый том — это том хранилища, контролируемый каталогом Unity, созданный в управляемом расположении хранилища в рамках содержащей схемы. См. раздел "Указание расположения управляемого хранилища" в каталоге Unity.

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

Что такое внешний том?

Внешний том — это том хранилища, управляемый Unity Catalog, зарегистрированный в каталоге в пределах внешнего расположения с использованием учетных данных хранилища, также управляемых Unity Catalog.

Каталог Unity не управляет жизненным циклом и структурой файлов во внешних томах. При удалении внешнего тома каталог Unity не удаляет базовые данные.

Какой путь используется для доступа к файлам в томе?

Тома данных располагаются на третьем уровне трехуровневого пространства имен каталога Unity (catalog.schema.volume):

схема объектной модели каталога Unity , ориентированная на том

Путь доступа к томам совпадает с использованием Apache Spark, SQL, Python или других языков и библиотек. Это отличается от устаревших шаблонов доступа для файлов в хранилище объектов, привязанных к рабочей области Azure Databricks.

Путь к файлам в томах использует следующий формат:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Azure Databricks также поддерживает необязательную dbfs:/ схему при работе с Apache Spark, поэтому следующий путь также работает:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Последовательность /<catalog>/<schema>/<volume> в пути соответствует трем именам объектов каталога Unity, связанным с файлом. Эти элементы пути доступны только для чтения и не напрямую записываются пользователями, что означает, что невозможно создать или удалить эти каталоги с помощью операций файловой системы. Они автоматически управляются и сохраняются в синхронизации с соответствующими сущностями каталога Unity.

Примечание.

Вы также можете получить доступ к данным во внешних томах с помощью URI облачного хранилища.

Зарезервированные пути для томов

Volumes представляет следующие зарезервированные пути, используемые для доступа к томам:

  • dbfs:/Volumes
  • /Volumes

Примечание.

Пути также зарезервированы для возможных опечаток в этих путях из API Apache Spark и dbutils, включая /volumes, /Volume, /volume, независимо от того, предшествуют ли им dbfs:/. Путь /dbfs/Volumes также зарезервирован, но не может использоваться для доступа к томам.

Томы поддерживаются только в Databricks Runtime 13.3 LTS и выше. В версиях Databricks Runtime 12.2 LTS и ниже операции с путями /Volumes могут выполняться успешно, но данные будут записываться только на временные диски хранения, подключенные к вычислительным кластерам, вместо сохранения данных на томах Unity Catalog, как ожидалось.

Внимание

Если у вас есть предварительно существующие данные, хранящиеся в зарезервированном пути в корневом каталоге DBFS, можно отправить запрос в службу поддержки, чтобы получить временный доступ к этим данным, чтобы переместить его в другое расположение.

Ограничения

Для взаимодействия с томами каталога Unity необходимо использовать вычислительные ресурсы с поддержкой каталога Unity. Томам не под силу справиться со всеми рабочими нагрузками.

В следующей таблице описаны ограничения томов каталога Unity на основе версии Databricks Runtime:

Версия среды выполнения Databricks Ограничения
14.3 LTS и все последующие версии
  • При вычислении с выделенным режимом доступа (ранее режимом доступа с одним пользователем) невозможно получить доступ к томам из потоков и подпроцессов в Scala.
14.2 и ниже
  • На вычислительном ресурсе, настроенном с помощью стандартного режима доступа (ранее режим общего доступа), нельзя использовать пользовательские определяемые функции (UDF) для доступа к томам.
    • Python или Scala имеют доступ к FUSE из драйвера, но не от исполнителей.
    • Код Scala, выполняющий операции ввода-вывода, может выполняться на драйвере, но не на исполнителях.
  • При вычислительных системах, настроенных на выделенный режим доступа, не поддерживаются FUSE в Scala, Код ввода-вывода Scala, работающий с данными через пути к томам, или Scala UDFs. Определяемые пользователем функции (UDFs) Python поддерживаются в выделенном режиме доступа.
Все поддерживаемые версии среды выполнения Databricks
  • Томы не поддерживают команды dbutils.fs, распределенные исполнителям.
  • Пользовательские функции UDF в каталоге Unity не поддерживают доступ к файловым путям тома.
  • Невозможно получить доступ к томам из RDD.
  • Вы не можете использовать spark-submit с JAR-файлами, хранящимися в разделе памяти.
  • Невозможно задать зависимости для других библиотек, к которым осуществляется доступ через пути тома внутри wheel- или JAR-файла.
  • Невозможно перечислить объекты каталога Unity с помощью /Volumes/<catalog-name> или шаблонов /Volumes/<catalog-name>/<schema-name>. Необходимо использовать полный путь, содержащий имя тома в форме Volumes/<catalog-name>/<schema-name>/<volume-name>. Например, dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • Конечная точка DBFS для REST API не поддерживает пути томов.
  • Невозможно указать тома данных в качестве назначения для передачи журналов кластера.
  • %sh mv не поддерживается для перемещения файлов между томами. Вместо этого используются типы dbutils.fs.mv или %sh cp.
  • Нельзя создать настраиваемую файловую систему Hadoop с томами. Например, использование new Path("dbfs:/Volumes/main/default/test-volume/file.txt") для создания объекта org.apache.hadoop.fs.path не будет работать.
  • Тома недоступны в правительственных регионах или пространствах Azure с соответствием FedRAMP.
  • Необходимо использовать формат пути со схемой dbfs:/ в панели конфигурации библиотеки Azure Фабрика данных, например, dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.