Lors de l’implémentation d’un Data Lake dans Azure, Databricks devient vite l’outil de traitement (compute) à utiliser (de part le support des notebooks, l’intégration dans ADF, la possibilité de provisionner le cluster uniquement lors de la computation…). Or, la documentation n’est pas toujours super explicite donc voici quelques indications sur l’utilisation de ADLS Gen2 avec Databricks
Monter le stockage sur Databricks
Étape 1 – Le CLI
Afin de stocker des informations sensibles (mot de passe, clés…) dans Databricks, il est nécessaire de commencer par installer son client, la marche à suivre est disponible ici =>https://docs.databricks.com/user-guide/dev-tools/databricks-cli.html#databricks-cli
Installation faite, il est alors possible de s’y connecter grâce au token à générer depuis l’interface en ligne de DataBricks :
Le token ainsi récupéré il devient possible d’utiliser la commande ci-dessous afin d’être authentifié auprès du service.
databricks configure --token
Etape 2 – Créer une Application Azure
Afin de pouvoir s’identifier auprès du service ADLS Gen2 nous avons besoin d’un compte d’application API, celui-ci est à créer en suivant les instructions disponibles ici => https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v1-add-azure-ad-app
L’objectif est de récupérer l’ApplicationId, l’ObjectId, ainsi que l’applicationKey
Étape 3 – Stocker les secrets
Afin de pouvoir monter un point de stockage, il va falloir fournir la clé de l’application, afin d’éviter d’exposer celle-ci en clair, elle est stockée dans le système de gestion des secrets de Databricks.
databricks secrets create-scope --scope blogPost --initial-manage-principal "users"
La commande ci-dessus permet la création d’un SCOPE, sorte d’étagère dans laquelle nous allons pouvoir ranger nos secrets avec la commande suivante :
databricks secrets put --scope blogPost --key ADLSGen2
L’exécution de cette commande ouvre un bloc note dans lequel il faut copier la clé de notre stockage Azure à attacher. Notre clé d’accès de stockage ADLSGen2 sera donc accessible depuis la clé ADLSGen2 dans le scope blogPost.
Étape 4 – Monter le stockage ADLS Gen2
Pour cela on exécutera la commande suivante depuis un notebook :
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": "<id de l'application>",
"fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope = "blogPost", key = "ADLSGen2"),
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/4ca47367-de12-411b-adb0-9f6675c33f97/oauth2/token"}
dbutils.fs.mount(
source = "abfss://FileSystem@CompteDeStockage.dfs.core.windows.net/",
mount_point = "/mnt/blog",
extra_configs = configs)
Donner les accès sur ADLS Gen2
Le point de montage est créé, il faudra toutefois bien penser à donner les droits à l’application sur celui-ci sans quoi impossible de se connecter. L’opération est réalisable depuis Azure Storage Explorer.
Attention à bien renseigner l’ObjectId de l’application et non l’applicationKey.
L’ObjectID est à récupérer depuis Entreprise Applications et pas App Registration. (Il existe bien deux ObjectId avec des valeurs différentes, il ne faut pas se tromper …)
Tester les accès
Dans un notebook, avec la commande suivante :
dbutils.fs.ls("/mnt/blog")
4 Comments
Très bon article, juste un petit commentaire pour signaler qu’il faut ajouter le role : « STORAGE BLOB DATA CONTRIBUTOR (PREVIEW) » au compte App pour accéder au repertoire à partir du point de montage. c’est indiqué dans la bonne doc de Azure Databricks : https://docs.databricks.com/spark/latest/data-sources/azure/azure-datalake-gen2.html
Hello, ce n’est pas un oublie. Cela n’est plus nécessaire depuis la mise à jour d’Hadoop suivante https://issues.apache.org/jira/browse/HADOOP-15969
J’ajoute que dans l’URL du endpoint il faut intégrer le Directory (tenant) ID visible également lors de l’app registration. Databricks rocks !
[…] Je vous passe la configuration d’accès au Data Lake que vous retrouverez ici => https://sauget-ch.fr/2019/03/adls-gen2-databricks/ […]