Подключение облачного хранилища объектов в Azure Databricks
Внимание
Подключения — это устаревший шаблон доступа. Databricks рекомендует использовать каталог Unity для управления доступом ко всем данным. См. статью "Подключение к облачному хранилищу объектов и службам с помощью каталога Unity".
Azure Databricks позволяет пользователям подключить облачное хранилище объектов к файловой системе Databricks (DBFS), чтобы упростить доступ к данным для пользователей, незнакомых с облачными понятиями. Подключенные данные не работают с каталогом Unity, и Databricks рекомендует перейти от использования подключений и вместо этого управлять управлением данными с помощью каталога Unity.
Как Azure Databricks подключает облачное хранилище объектов?
Подключения Azure Databricks создают связь между рабочей областью и облачным хранилищем объектов, что позволяет взаимодействовать с облачным хранилищем объектов через знакомые пути к файлам (относительно файловой системы Databricks). Подключения работают путем создания локального псевдонима в каталоге /mnt
, в котором хранятся следующие сведения:
- Расположение облачного хранилища объектов.
- Спецификации драйвера для подключения к учетной записи хранения или контейнеру.
- Учетные данные безопасности, необходимые для доступа к данным.
Какой синтаксис используется для подключения хранилища?
source
указывает универсальный код ресурса (URI) хранилища объектов (и при необходимости может кодировать учетные данные безопасности). mount_point
указывает локальный путь в каталоге /mnt
. Некоторые источники хранилища объектов поддерживают необязательный encryption_type
аргумент. Для некоторых шаблонов доступа можно передать дополнительные спецификации конфигурации в качестве словаря extra_configs
.
Примечание.
Databricks рекомендует настроить конфигурацию Spark и Hadoop для конкретного подключения в качестве параметров.extra_configs
Это гарантирует, что конфигурации привязаны к подключению, а не к кластеру или сеансу.
dbutils.fs.mount(
source: str,
mount_point: str,
encryption_type: Optional[str] = "",
extra_configs: Optional[dict[str:str]] = None
)
Обратитесь к администраторам рабочей области и облака перед настройкой или изменением подключений данных, так как неверная конфигурация может скомпрометировать доступ ко всем пользователям в рабочей области.
Примечание.
Помимо подходов, описанных в этой статье, можно автоматизировать подключение контейнера с помощью поставщика Databricks Terraform и databricks_mount.
Отключение точки подключения
Чтобы отключить точку подключения, используйте следующую команду:
dbutils.fs.unmount("/mnt/<mount-name>")
Предупреждение
Чтобы избежать ошибок, никогда не изменяйте точку подключения во время чтения или записи в нее других заданий. После изменения подключения всегда запустите dbutils.fs.refreshMounts()
все остальные запущенные кластеры для распространения обновлений подключения. См. команду refreshMounts (dbutils.fs.refreshMounts).
Подключение ADLS 2-го поколения или Хранилища BLOB-объектов с помощью ABFS
Вы можете подключить данные в учетной записи хранения Azure с помощью субъекта-службы приложений идентификатора Microsoft Entra для проверки подлинности. Дополнительные сведения см. в разделе "Доступ к хранилищу" с помощью субъекта-службы и идентификатора Microsoft Entra (Azure Active Directory).
Внимание
- Все пользователи в рабочей области Azure Databricks имеют доступ к подключенной учетной записи ADLS 2-го поколения. Субъекту-службе, используемой для доступа к учетной записи ADLS 2-го поколения, должен быть предоставлен доступ только к этой учетной записи ADLS 2-го поколения; у нее не должно быть доступа к другим ресурсам Azure.
- При создании точки подключения с помощью кластера пользователи кластера могут немедленно получить доступ к точке подключения. Чтобы использовать точку подключения в другом работающем кластере, необходимо в этом работающем кластере выполнить
dbutils.fs.refreshMounts()
, чтобы сделать созданную точку подключения доступной. - Отключение точки подключения во время выполнения заданий может привести к ошибкам. Убедитесь, что рабочие задания не отключают хранилище в процессе обработки.
- Точки подключения, использующие секреты, не обновляются автоматически. Если в подключенном хранилище используется секрет, который периодически обновляется, истекает или удаляется, могут возникать ошибки, например
401 Unauthorized
. Чтобы устранить такую ошибку, необходимо отключить и повторно подключить хранилище. - Иерархическое пространство имен (HNS) должно быть включено для успешного подключения учетной записи хранения Azure Data Lake Storage 2-го поколения с помощью конечной точки ABFS.
Выполните следующую команду в записной книжке, чтобы проверить подлинность и создать точку подключения.
configs = {"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": "<application-id>",
"fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<directory-id>/oauth2/token"}
# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
mount_point = "/mnt/<mount-name>",
extra_configs = configs)
val configs = Map(
"fs.azure.account.auth.type" -> "OAuth",
"fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id" -> "<application-id>",
"fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
"fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com/<directory-id>/oauth2/token")
// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
mountPoint = "/mnt/<mount-name>",
extraConfigs = configs)
Replace
<application-id>
на идентификатор приложения (клиента) для приложения Azure Active Directory.<scope-name>
на имя области секретов Databricks.<service-credential-key-name>
на имя ключа с секретом клиента.<directory-id>
на идентификатор каталога (клиента) для приложения Azure Active Directory.<container-name>
на имя контейнера в учетной записи хранения ADLS 2-го поколения.<storage-account-name>
на имя учетной записи хранения ADLS 2-го поколения.<mount-name>
на имя предполагаемой точки подключения в DBFS.