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


Unity Catalogvolumes— что это?

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

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

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

Внимание

Нельзя использовать volumes в качестве расположения для tables. Volumes предназначены только для доступа к данным, основанного на маршруте. Используйте tables, если вы хотите работать с табличными данными в Unity Catalog.

В следующих статьях содержатся дополнительные сведения о работе с volumes:

Примечание.

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

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

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

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

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

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

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

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

Volumes находится на третьем уровне Unity Catalog трехуровневого пространства имен (catalog.schema.volume):

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

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

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

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

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

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

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

Примечание.

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

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

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

  • dbfs:/Volumes
  • /Volumes

Примечание.

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

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

Внимание

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

Ограничения

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

Следующее table описывает ограничения объема Unity Catalog в зависимости от версии Databricks Runtime:

Версия среды выполнения Databricks Ограничения
14.3 LTS и все последующие версии — В кластерах отдельных пользователей доступ к volumes из потоков и подпроцессов в Scala невозможно.
14.2 и ниже — На вычислительном ресурсе, настроенном в режиме совместного доступа, вы не можете использовать определяемые пользователем функции (UDF) для доступа к volumes.
— Python или Scala имеют доступ к FUSE из драйвера, но не от исполнителей.
— Код Scala, выполняющий операции ввода-вывода, может выполняться на драйвере, но не исполнителях.
— На вычислительном узле, настроенном в режиме одного пользователя, нет поддержки FUSE в Scala, а также в коде ввода-вывода Scala, использующем пути томов, или в пользовательских функциях Scala. Определяемые пользователем функции Python поддерживаются в режиме доступа к одному пользователю.
Все поддерживаемые версии среды выполнения Databricks — Volumes не поддерживают dbutils.fs команды, распределяемые исполнителям.
— В Unity Catalog пользовательские функции не поддерживают доступ к путям файлов тома.
— Доступ к volumes из RDD невозможно.
— Вы не можете использовать spark-submit с пакетами JAR, хранящимися на диске.
— Вы не можете определить зависимости для других библиотек, к которым осуществляется доступ через пути тома в wheel или JAR-файле.
— Вы не можете list объекты Unity Catalog, используя шаблоны /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 не поддерживает путь volumes.
— Невозможно указать volumes в качестве назначения для доставки журналов кластера.
- %sh mv не поддерживается для перемещения файлов между volumes. Вместо этого используются типы dbutils.fs.mv или %sh cp.
— Вы не можете создать пользовательскую файловую систему Hadoop с volumes. Например, использование new Path("dbfs:/Volumes/main/default/test-volume/file.txt") для создания объекта org.apache.hadoop.fs.path не будет работать.
— Volumes недоступны в регионах Azure или в рабочих областях, предназначенных для государственных организаций с соответствием FedRAMP.
— Необходимо использовать формат пути с схемой dbfs:/ в панели конфигурации библиотеки фабрики данных Azure, например dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.