Montage de stockage d’objets cloud sur Azure Databricks
Important
Les montages constituent un modèle d’accès hérité. Databricks recommande d’utiliser Unity Catalog pour gérer l’accès à toutes les données. Consultez Se connecter au stockage d’objets cloud et aux services à l’aide du catalogue Unity.
Azure Databricks permet aux utilisateurs de monter un stockage d’objets cloud dans le système de fichiers Databricks (DBFS) afin de simplifier les modèles d’accès aux données pour les utilisateurs peu familiarisés avec les concepts du cloud. Les données montées ne fonctionnent pas avec Unity Catalog, et Databricks recommande de ne pas utiliser les montages et de gérer la gouvernance des données avec Unity Catalog.
Comment Azure Databricks monte-t-il le stockage d’objets cloud ?
Les montages Azure Databricks créent un lien entre un espace de travail et un stockage d’objets cloud, qui vous permet d’interagir avec le stockage d’objets cloud à l’aide de chemins d’accès de fichiers familiers par rapport au système de fichiers Databricks. Les montages fonctionnent en créant un alias local sous le répertoire /mnt
qui stocke les informations suivantes :
- Emplacement du stockage d’objets cloud.
- Spécifications du pilote pour la connexion au compte de stockage ou au conteneur.
- Informations d’identification de sécurité requises pour accéder aux données.
Quelle est la syntaxe pour le montage d’un stockage ?
source
spécifie l’URI du stockage d’objets (et peut éventuellement encoder des informations d’identification de sécurité). mount_point
spécifie le chemin d’accès local dans le répertoire /mnt
. Certaines sources de stockage d’objets prennent en charge un argument encryption_type
facultatif. Pour certains modèles d’accès, vous pouvez passer des spécifications de configuration supplémentaires en tant que dictionnaire à extra_configs
.
Remarque
Databricks recommande de définir la configuration Spark et Hadoop spécifique au montage en tant qu’options à l’aide de extra_configs
. Cela permet de s’assurer que les configurations sont liées au montage plutôt qu’au cluster ou à la session.
dbutils.fs.mount(
source: str,
mount_point: str,
encryption_type: Optional[str] = "",
extra_configs: Optional[dict[str:str]] = None
)
Consultez vos administrateurs d’espace de travail et de cloud avant de configurer ou de modifier des montages de données, car une configuration incorrecte peut donner un accès non sécurisé à tous les utilisateurs de votre espace de travail.
Notes
En plus des approches décrites dans cet article, vous pouvez automatiser le montage d’un compartiment avec le fournisseur Databricks Terraform et databricks_mount.
Démonter un point de montage
Pour démonter un point de montage, utilisez la commande suivante :
dbutils.fs.unmount("/mnt/<mount-name>")
Avertissement
Pour éviter les erreurs, ne modifiez jamais un point de montage quand d’autres travaux le lisent ou y écrivent. Après avoir modifié un montage, exécutez toujours dbutils.fs.refreshMounts()
sur tous les autres clusters en cours d’exécution pour propager les mises à jour de montage. Consultez la section Commande refreshMounts (dbutils.fs.refreshMounts).
Monter le stockage ADLS Gen2 ou le Stockage Blob avec ABFS
Vous pouvez monter des données dans un compte de stockage Azure en utilisant un principal de service d’application Microsoft Entra ID pour l’authentification. Pour plus d’informations, consultez Accéder au stockage en utilisant un principal de service et Microsoft Entra ID (Azure Active Directory).
Important
- Tous les utilisateurs de l’espace de travail Azure Databricks ont accès au compte ADLS Gen2 monté. Le principal de service que vous utilisez pour accéder au compte ADLS Gen2 doit être autorisé à accéder uniquement à ce compte ADLS Gen2 ; il ne doit pas être autorisé à accéder à d’autres ressources Azure.
- Lorsque vous créez un point de montage via un cluster, les utilisateurs du cluster peuvent accéder immédiatement au point de montage. Pour utiliser le point de montage dans un autre cluster en cours d’exécution, vous devez exécuter
dbutils.fs.refreshMounts()
sur ce cluster pour mettre à disposition le nouveau point de montage créé. - Le démontage d’un point de montage pendant l’exécution des travaux peut entraîner des erreurs. Assurez-vous que les travaux de production ne démontent pas le stockage dans le cadre du traitement.
- Les points de montage qui utilisent des secrets ne sont pas automatiquement actualisés. Si le stockage monté repose sur un secret qui change, expire ou est supprimé, des erreurs peuvent se produire, telles que
401 Unauthorized
. Pour résoudre une telle erreur, vous devez démonter et remonter le stockage. - L’espace de noms hiérarchique (HNS) doit être activé pour monter correctement un compte de stockage Azure Data Lake Storage Gen2 à l’aide du point de terminaison ABFS.
Exécutez la commande suivante dans votre notebook pour vous authentifier et créer un point de montage.
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>
par l’ID d’application (client) de votre application Azure Active Directory.<scope-name>
par le nom de l’étendue de secrets Databricks.<service-credential-key-name>
par le nom de la clé contenant la clé secrète client.<directory-id>
par l’ID de répertoire (locataire) de l'application Azure Active Directory.<container-name>
par le nom d’un conteneur dans le compte de stockage ADLS Gen2.<storage-account-name>
par le nom du compte de stockage ADLS Gen2.<mount-name>
par le nom du point de montage prévu dans DBFS.