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


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

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

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

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

Внимание

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

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

Примечание.

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

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

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

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

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

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

Каталог 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 облачного хранилища.

Пример записной книжки: создание и работа с томами

В следующей записной книжке показан базовый синтаксис SQL для создания и взаимодействия с томами каталога Unity.

Руководство. Записная книжка каталога Unity

Получить записную книжку

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

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

  • 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, как ожидалось.

Внимание

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

Ограничения

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

Примечание.

Томам не поддерживаются dbutils.fs команды, распределенные исполнителям.

Действительны следующие ограничения.

В Databricks Runtime 14.3 LTS и более поздних версиях:

  • В кластерах с одним пользователем невозможно получить доступ к томам из потоков и подпроцессов в Scala.

В Databricks Runtime 14.2 и ниже:

  • При вычислении, настроенном в режиме общего доступа, вы не можете использовать определяемые пользователем функции для доступа к томам.
    • Python или Scala имеют доступ к FUSE из драйвера, но не от исполнителей.
    • Код Scala, выполняющий операции ввода-вывода, может выполняться на драйвере, но не на исполнителях.
  • При вычислении, настроенном с одним режимом доступа пользователей, в Scala, код ввода-вывода Scala, обращающийся к данным с помощью путей к томам, или UDFs Scala не поддерживается. Определяемые пользователем функции Python поддерживаются в режиме доступа к одному пользователю.

Во всех поддерживаемых версиях Databricks Runtime:

  • Определяемые пользователем UDF каталога Unity не поддерживают доступ к путям к файлам тома.

  • Невозможно получить доступ к томам из удаленных рабочих служб.

  • Вы не можете использовать spark-submit с JAR, хранящимися в томе.

  • Невозможно определить зависимости для других библиотек, к которому осуществляется доступ через пути тома в колесике или JAR-файле.

  • Невозможно перечислить объекты каталога Unity с помощью /Volumes/<catalog-name> шаблонов или /Volumes/<catalog-name>/<schema-name> шаблонов. Необходимо использовать полный путь, содержащий имя тома.

  • Конечная точка DBFS для REST API не поддерживает пути томов.

  • Тома исключаются из глобальных результатов поиска в рабочей области Azure Databricks.

  • Невозможно указать тома в качестве назначения для доставки журналов кластера.

  • %sh mv не поддерживается для перемещения файлов между томами. Вместо этого используются типы dbutils.fs.mv или %sh cp.

  • Вы не можете создать пользовательскую файловую систему Hadoop с томами, что означает, что следующее не поддерживается:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • Тома недоступны в Azure для государственных организаций регионах или рабочих областях с соответствием FedRAMP.

  • Необходимо использовать формат пути со схемой dbfs:/ на панели конфигурации библиотеки Фабрика данных Azure. Например, dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.