Рекомендации по работе с 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")