Partager via


Intégrer OneLake à Azure Databricks

Ce scénario montre comment se connecter à OneLake via Azure Databricks. Une fois ce tutoriel terminé, vous pourrez lire et écrire dans un lac Microsoft Fabric à partir de votre espace de travail Azure Databricks.

Prerequisites

Avant de vous connecter, vous devez avoir :

  • Espace de travail Fabric et lakehouse.
  • Un espace de travail Azure Databricks premium. Seuls les espaces de travail Azure Databricks Premium prennent en charge la transmission des informations d’identification Microsoft Entra, nécessaire pour ce scénario.

Configurer votre espace de travail Databricks

  1. Ouvrez votre espace de travail Azure Databricks, puis sélectionnez Créer un>cluster.

  2. Pour vous authentifier auprès de OneLake avec votre identité Microsoft Entra, vous devez activer la passe d’informations d’identification Azure Data Lake Storage (ADLS) sur votre cluster dans les options avancées.

    Capture d’écran montrant où sélectionner Créer un cluster dans l’écran Options avancées.

    Note

    Vous pouvez également connecter Databricks à OneLake à l’aide d’un principal de service. Pour plus d’informations sur l’authentification d’Azure Databricks à l’aide d’un principal de service, consultez Gérer les principaux de service.

  3. Créez le cluster avec vos paramètres préférés. Pour plus d’informations sur la création d’un cluster Databricks, consultez Configurer des clusters - Azure Databricks.

  4. Ouvrez un notebook et connectez-le à votre cluster nouvellement créé.

Créer votre bloc-notes

  1. Accédez à votre Fabric lakehouse et récupérez le chemin d'accès au système de fichiers Azure Blob (ABFS) dans votre lakehouse. Vous pouvez le trouver dans le volet Propriétés .

    Note

    Azure Databricks prend uniquement en charge le pilote ABFS (Azure Blob Filesystem) lors de la lecture et de l’écriture dans ADLS Gen2 et OneLake : abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/.

  2. Enregistrez le chemin d’accès à votre lakehouse dans votre notebook Databricks. Ce lakehouse est l’endroit où vous écrivez vos données traitées ultérieurement :

    oneLakePath = 'abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/myLakehouse.lakehouse/Files/'
    
  3. Chargez des données à partir d’un jeu de données public Databricks dans un dataframe. Vous pouvez également lire un fichier à partir d’un autre emplacement dans Fabric ou choisir un fichier à partir d’un autre compte ADLS Gen2 que vous possédez déjà.

    yellowTaxiDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/databricks-datasets/nyctaxi/tripdata/yellow/yellow_tripdata_2019-12.csv.gz")
    
  4. Filtrez, transformez ou préparez vos données. Pour ce scénario, vous pouvez réduire votre jeu de données pour accélérer le chargement, la jointure avec d’autres jeux de données ou filtrer en fonction de résultats spécifiques.

    filteredTaxiDF = yellowTaxiDF.where(yellowTaxiDF.fare_amount<4).where(yellowTaxiDF.passenger_count==4)
    display(filteredTaxiDF)
    
  5. Écrivez votre trame de données filtrée dans votre entrepôt de données Fabric en utilisant votre chemin OneLake.

    filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)
    
  6. Testez que vos données ont été correctement écrites en lisant votre fichier nouvellement chargé.

    lakehouseRead = spark.read.format('csv').option("header", "true").load(oneLakePath)
    display(lakehouseRead.limit(10))
    

Cette opération termine l’installation et vous pouvez désormais lire et écrire des données dans Fabric à l’aide d’Azure Databricks.

Connexion à OneLake avec le calcul sans serveur de Databricks

Serverless compute de Databricks permet d’exécuter des workloads sans avoir besoin de provisionner un cluster. Conformément à la documentation de Serverless de Databricks, pour automatiser la configuration de Spark sur le calcul serverless, Serverless de Databricks n’autorise pas la configuration des propriétés Spark en dehors des propriétés prises en charge répertoriées ici.

Note

Cette limitation n’est pas unique pour Azure Databricks. Les implémentations serverless databricks sur Amazon Web Services (AWS) et Google Cloud présentent le même comportement.

Si vous tentez de modifier ou de définir une configuration Spark non prise en charge dans un notebook lié au calcul sans serveur Databricks, le système retourne une erreur CONFIG_NOT_AVAILABLE.

Capture d’écran montrant le message d’erreur si un utilisateur tente de modifier la configuration Spark non prise en charge dans le calcul serverless.

OneLake prend en charge la connectivité entrante à partir du calcul sans serveur Databricks. Vous pouvez vous connecter à OneLake (à partir du calcul serverless Databricks) à condition que vous disposiez d’un accès approprié et qu’il existe un chemin réseau entre le calcul serverless Databricks et OneLake. Avec Databricks serverless, vous devez vous assurer que votre code ne modifie aucune propriété Spark non prise en charge.

Prerequisites

Avant de vous connecter, vous devez avoir :

  • Espace de travail Fabric et lakehouse.
  • Un espace de travail Azure Databricks premium.
  • Un principal de service avec un minimum d’attribution de rôle d’espace de travail Contributeur.
  • Secrets de base de données ou Azure Key Vault (AKV) pour stocker et récupérer des secrets. Cet exemple utilise les secrets Databricks.

Créer votre bloc-notes

  1. Créez un notebook dans l’espace de travail Databricks et attachez-le au calcul sans serveur.

    Capture d’écran montrant comment connecter un notebook Databricks avec le calcul sans serveur.

  2. Importez des modules Python : dans cet exemple, vous utilisez trois modules :

    • msal est Microsoft Authentication Library (MSAL) et il est conçu pour aider les développeurs à intégrer l’authentification de la plateforme d’identités Microsoft dans leurs applications.
    • le module demandes est utilisé pour effectuer des requêtes HTTP à l’aide de Python.
    • Delta Lake est utilisé pour lire et écrire des tables Delta Lake à l’aide de Python.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Déclarez des variables pour le locataire Microsoft Entra, y compris l'ID d’application. Utilisez l’ID de locataire du locataire dans lequel Microsoft Fabric est déployé.

    # Fetch from Databricks secrets.
    tenant_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for tenant _id>")
    client_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for client _id>") 
    client_secret = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for secret>")
    
  4. Déclarez les variables d’espace de travail Fabric.

    workspace_id = "<replace with workspace name>"
    lakehouse_id = "<replace with lakehouse name>"
    table_to_read = "<name of lakehouse table to read>"
    storage_account_name = workspace_id
    onelake_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/{table_to_read}"
    
  5. Initialisez le client logiciel pour acquérir un jeton.

    authority = f"https://login.microsoftonline.com/{tenant_id}"
    
    app = ConfidentialClientApplication(
     client_id,
     authority=authority,
     client_credential=client_secret
     )
    
     result = app.acquire_token_for_client(scopes=["https://onelake.fabric.microsoft.com/.default"])
    
     if "access_token" in result:
       access_token = result["access_token"]
       print("Access token acquired.")
       token_val = result['access_token']
    
  6. Lire une table delta à partir de OneLake

    dt = DeltaTable(onelake_uri, storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"})
    df = dt.to_pandas()
    print(df.head())
    

    Note

    Le principal de service dispose d’une attribution de rôle Contributeur dans l'espace de travail et vous pouvez l’utiliser pour écrire des données sur OneLake.

Cette opération termine la configuration et vous pouvez désormais lire des données de OneLake à l'aide de Databricks et d'un notebook attaché au computing sans serveur.