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

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

Хотя таблицы управляют табличными данными, тома управляют не табличными данными любого формата, включая структурированные, полуструктурированные или неструктурированные.

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

  • Управляемые тома: Для простого хранилища, которым управляет Databricks.
  • Внешние тома: для управления существующими расположениями облачного объектного хранилища.

Варианты использования томов

Варианты использования томов:

  • Зарегистрируйте целевые области для необработанных данных, созданных внешними системами для поддержки их обработки на ранних этапах конвейеров ETL и других действий по проектированию данных.
  • Зарегистрируйте промежуточные расположения для приема. Например, с помощью инструкций Auto Loader COPY INTO или CTAS (CREATE TABLE AS).
  • Предоставьте места хранения файлов для специалистов по обработке и анализу данных, аналитиков и инженеров машинного обучения, которые будут использоваться в рамках анализа и других задач обработки и анализа данных.
  • Предоставление пользователям Azure Databricks доступа к произвольным файлам, созданным и размещенным в облачном хранилище другими системами. Например, большие коллекции неструктурированных данных (например, изображения, аудио, видео и PDF-файлы), захваченные системами наблюдения или устройствами Интернета вещей, или файлы библиотеки (JAR и файлы колес Python), экспортированные из локальных систем управления зависимостями или конвейеров CI/CD.
  • Храните операционные данные, такие как ведение журнала или файлы контрольных точек.

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

Important

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

Управляемые и внешние тома

Управляемые и внешние тома обеспечивают практически идентичные возможности при использовании средств Azure Databricks, интерфейсов UIs и API. Основные различия связаны с расположением хранилища, жизненным циклом и контролем:

Функция Управляемые тома Внешние тома
Расположение хранилища Создано в управляемом UC хранилище для схемы Зарегистрировано в существующем пути к хранилищу облачных объектов
Жизненный цикл данных UC управляет макетом и процессом удаления (удаление с сохранением данных на срок 7 дней) Данные остаются в облачном хранилище при уменьшении тома.
Управление доступом Весь доступ проходит через UC UC управляет доступом, но внешние средства могут использовать прямые URI
Требуется миграция? нет Нет— используйте существующие пути хранения as-is
Типичный вариант использования Самый простой вариант для рабочих нагрузок, доступных только для Databricks Комбинированный доступ к Databricks и внешним системам

Зачем использовать управляемые тома?

Управляемые тома имеют следующие преимущества:

  • Выбор по умолчанию для рабочих нагрузок Databricks.
  • Нет необходимости управлять облачными учетными данными или путями хранения вручную.
  • Самый простой вариант для быстрого создания управляемых расположений хранения.

Зачем использовать внешние тома?

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

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

Databricks рекомендует использовать внешние тома для хранения не табличных файлов данных, которые считываются или записываются внешними системами в дополнение к Azure Databricks. Каталог Unity не управляет чтением и записью непосредственно в облачном хранилище объектов из внешних систем, поэтому необходимо настроить дополнительные политики и учетные данные в облачной учетной записи, чтобы политики управления данными соблюдались за пределами Azure Databricks.

Путь к файлам в томе

Тома данных располагаются на третьем уровне трехуровневого пространства имен каталога 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 Catalog для файла. Эти каталоги доступны только для чтения и управляются автоматически каталогом Unity. Невозможно создать или удалить их с помощью команд файловой системы.

Note

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

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

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

  • dbfs:/Volumes
  • /Volumes

Note

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

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

Important

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

Требования к вычислениям

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

Сведения о хранении контрольных точек DataFrame в томах см. в разделе " Контрольные точки DataFrame" в томах.

Limitations

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

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

Версия среды выполнения Databricks Limitations
Все поддерживаемые версии среды выполнения Databricks
  • Тома не поддерживают dbutils.fs команды, распределенные исполнителям.
  • UDF каталога Unity не поддерживают доступ к файловым путям тома.
  • Вы не можете получить доступ к томам из RDD.
  • Вы не можете использовать устаревшую задачу spark-submit с JARs, хранящимися в томе данных. Вместо этого используйте задачу JAR. Смотрите задачу JAR для заданий.
  • Вы не можете определить зависимости для других библиотек, к которые обращаются через пути тома в колесике или JAR-файле.
  • Невозможно вывести список объектов каталога Unity с помощью шаблонов /Volumes/<catalog-name> или /Volumes/<catalog-name>/<schema-name>. Необходимо использовать полностью определённый путь, включающий имя тома, в формате Volumes/<catalog-name>/<schema-name>/<volume-name>. Например, dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • %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.
14.3 LTS и все последующие версии
  • При вычислении с выделенным режимом доступа (ранее режимом доступа с одним пользователем) невозможно получить доступ к томам из потоков и подпроцессов в Scala.
14.2 и ниже
  • Настроенная в стандартном режиме доступа (ранее — в режиме общего доступа) вычислительная система не позволяет использовать пользовательские функции для доступа к томам.
    • Python или Scala имеют доступ к FUSE из драйвера, но не от исполнителей.
    • Код Scala, выполняющий операции ввода-вывода, может выполняться на драйвере, но не на исполнителях.
  • При вычислительных системах, настроенных на выделенный режим доступа, не поддерживаются FUSE в Scala, Код ввода-вывода Scala, работающий с данными через пути к томам, или Scala UDFs. Определяемые пользователем функции (UDFs) Python поддерживаются в выделенном режиме доступа.

Дальнейшие шаги

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