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


Рекомендации по работе с DBFS и каталогом Unity

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

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

Как DBFS используется в рабочих областях с поддержкой каталога Unity?

Действия, выполняемые в таблицах в hive_metastore шаблонах доступа к устаревшим данным, которые могут включать данные и учетные данные хранения, управляемые DBFS. Управляемые таблицы в область hive_metastore рабочей области хранятся в корневом каталоге DBFS.

Как DBFS работает в режиме доступа для одного пользователя?

Кластеры, настроенные в режиме доступа одного пользователя, имеют полный доступ к DBFS, включая все файлы в корневом каталоге DBFS и подключенные данные.

Как DBFS работает в режиме общего доступа?

Режим общего доступа объединяет управление данными каталога Unity со старыми списками контроля доступа для таблиц Azure Databricks. Доступ к данным в hive_metastore имеют только пользователи, которым явным образом были предоставлены разрешения.

Для взаимодействия с файлами напрямую с помощью DBFS необходимо предоставить разрешения ANY FILE. Так как ANY FILE позволяет пользователям обходить старые списки контроля доступа к таблицам в hive_metastore и получать доступ ко всем данным, управляемым DBFS, Databricks рекомендует соблюдать осторожность при предоставлении этого разрешения.

Не используйте DBFS с внешними расположениями каталога Unity

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

Защита хранилища, управляемого каталогом Unity

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

Databricks рекомендует следующее для управляемых расположений хранения:

  • Используйте новые учетные записи хранения или контейнеры.
  • Определите настраиваемую политику удостоверений для каталога Unity.
  • Ограничить доступ ко всем ресурсам Azure Databricks, управляемым каталогом Unity.
  • Ограничить доступ ко всем политикам доступа к удостоверениям, созданным для каталога Unity.

Добавление существующих данных во внешние расположения

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

Ни в коме случае не следует загружать учетную запись хранения, используемую в качестве корня DBFS в качестве внешнего расположения в каталоге Unity.

Конфигурации кластера игнорируются политиками доступа к файловой системе каталога Unity

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

Ограничение доступа к нескольким путям

Хотя обычно можно использовать каталог Unity и DBFS вместе, одинаковые пути или пути с общим отношением "родители-потомки" нельзя указывать в одной и той же команде или ячейке записной книжки, используя различные методы доступа.

Например, если внешняя таблица foo определена в hive_metastore в расположении a/b/c, а внешнее расположение определено в каталоге Unity в a/b/, то при выполнении следующего кода появится ошибка:

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

Эта ошибка не возникнет, если данных фрагмент программы разбить на две ячейки:

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")