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


Что такое 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.

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

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

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

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

внешний том — это том хранилища, управляемый системой Unity Catalog, зарегистрированный в каталоге во внешнем расположении с помощью управляемого системой Unity Catalogхранилища 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 Catalogдля взаимодействия с Unity Catalogvolumes. Volumes не поддерживают любые рабочие нагрузки.

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

Версия среды выполнения Databricks Ограничения
14.3 LTS и все последующие версии — В кластерах отдельных пользователей доступ к volumes из потоков и подпроцессов в Scala невозможно.
14.2 и ниже — На компьютере, настроенном в режиме общего доступа, вы не можете использовать функции, определяемые пользователем (UDFs), для доступа к volumes.
— Python или Scala имеют доступ к FUSE из драйвера, но не от исполнителей.
— Код Scala, выполняющий операции ввода-вывода, может выполняться на драйвере, но не исполнителях.
— На вычислительном узле, настроенном в режиме одного пользователя, нет поддержки FUSE в Scala, а также в коде ввода-вывода Scala, использующем пути томов, или в пользовательских функциях Scala. Определяемые пользователем функции Python поддерживаются в режиме доступа к одному пользователю.
Все поддерживаемые версии среды выполнения Databricks — Volumes не поддерживают команды dbutils.fs, распределенные исполнителям.
— Unity Catalog UDF не поддерживают доступ к путям файлов тома.
— Доступ к 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.