Создание и работа с томами

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

Дополнительные сведения об отправке и управлении файлами в томах см. в разделе "Отправка файлов в том каталога Unity" и операций управления файлами для томов каталога Unity.

Примечание.

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

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

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

Внимание

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

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

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

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

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

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

  • Добавление управления в файлы данных без миграции.
  • Управление файлами, созданными другими системами, которые должны быть приняты или доступны Azure Databricks.
  • Управление данными, созданными Azure Databricks, которые должны быть доступны непосредственно из облачного хранилища объектов другими системами.

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

Примечание.

При определении тома облачный URI-код ресурса (URI) к данным в пути тома регулируется разрешениями тома.

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

Путь доступа к томам совпадает с использованием 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, связанным с файлом. Эти элементы пути доступны только для чтения и не напрямую записываются пользователями, что означает, что невозможно создать или удалить эти каталоги с помощью операций файловой системы. Они автоматически управляются и сохраняются в синхронизации с соответствующими сущностями UC.

Примечание.

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

Каковы привилегии для томов?

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

См. статью Защищаемые объекты и привилегии Unity Catalog.

Кто может управлять привилегиями тома?

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

Это означает, что для томов каталога Unity следующие субъекты могут управлять привилегиями томов:

  • Владелец родительского каталога.
  • Владелец родительской схемы.
  • Владелец тома.

Хотя каждый объект может иметь только одного владельца, Databricks рекомендует назначать владение для большинства объектов группе, а не отдельного пользователя. Начальное владение для любого объекта назначается пользователю, создающим этот объект. См. раздел Управление владельцем объекта каталога Unity.

Создание управляемого тома

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

Ресурс Требуемые разрешения
Схема USE SCHEMA, CREATE VOLUME
Каталог USE CATALOG

SQL

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

CREATE VOLUME <catalog>.<schema>.<volume-name>;

Обозреватель каталогов

Чтобы создать управляемый том в каталоге Обозреватель:

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. Найдите или найдите схему, к которой нужно добавить том, и выберите ее.
  3. Нажмите кнопку "Создать том". (У вас должны быть достаточные привилегии.)
  4. Введите имя тома.
  5. Укажите комментарий (необязательно).
  6. Нажмите кнопку Создать.

Создание внешнего тома

Для создания внешнего тома необходимо иметь следующие разрешения:

Ресурс Требуемые разрешения
Внешнее расположение CREATE EXTERNAL VOLUME
Схема USE SCHEMA, CREATE VOLUME
Каталог USE CATALOG

SQL

Чтобы создать внешний том, укажите путь в внешнем расположении с помощью следующего синтаксиса:

CREATE EXTERNAL VOLUME <catalog>.<schema>.<external-volume-name>
LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

Обозреватель каталогов

Чтобы создать внешний том в Обозреватель каталога, выполните приведенные действия.

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. Найдите или найдите схему, к которой нужно добавить том, и выберите ее.
  3. Нажмите кнопку "Создать том". (У вас должны быть достаточные привилегии.)
  4. Введите имя тома.
  5. Выберите внешнее расположение, в котором нужно создать том.
  6. Измените путь, чтобы отразить вложенный каталог, в котором требуется создать том.
  7. Укажите комментарий (необязательно).
  8. Нажмите кнопку Создать.

Удаление тома

Только пользователи с правами владельца могут удалить том. См. Кто возможность управления привилегиями тома?.

Чтобы удалить том, используйте следующий синтаксис:

DROP VOLUME IF EXISTS <volume-name>;

При удалении управляемого тома Azure Databricks удаляет базовые данные в течение 30 дней. При удалении внешнего тома удалите том из каталога Unity, но базовые данные остаются неизменными во внешнем расположении.

Чтение файлов в томе

Для просмотра содержимого тома или доступа к файлам, хранящимся на томах, необходимо иметь следующие разрешения:

Ресурс Требуемые разрешения
Громкость READ
Схема USE SCHEMA
Каталог USE CATALOG

Вы взаимодействуете с содержимым томов с помощью путей. См. путь к файлам в томе?

Создание, удаление и выполнение других операций управления файлами в томе

Для выполнения операций управления файлами с файлами, хранящимися на томах, необходимо иметь следующие разрешения:

Ресурс Требуемые разрешения
Громкость READ, WRITE
Схема USE SCHEMA
Каталог USE CATALOG

Вы можете выполнять операции управления файлами на томах со следующими средствами:

  • Обозреватель каталога предоставляет множество вариантов пользовательского интерфейса для задач управления файлами. См. раздел "Что такое каталог Обозреватель?".
  • Команды служебных программ fs Databricks. См . служебную программу файловой системы (dbutils.fs).
  • Магическая %fs команда предоставляет те же функции, что dbutils.fsи .
  • Отправка файлов в пользовательский интерфейс тома. См. раздел "Отправка файлов в том каталога Unity".
  • Команды с открытым кодом, такие как os.listdir().
  • Поддерживаются некоторые команды bash. %sh cp поддерживается, а %sh mv — нет.

Полные сведения о программном взаимодействии с файлами на томах см. в статье "Работа с файлами в томах каталога Unity".

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

В следующей записной книжке показан базовый синтаксис 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.