Freigeben über


Integrieren von OneLake in Azure Databricks

In diesem Artikel wird gezeigt, wie Sie eine Verbindung mit OneLake über Azure Databricks serverless compute herstellen.

Voraussetzungen

Bevor Sie eine Verbindung herstellen, stellen Sie sicher, dass Sie folgendes haben:

  • Ein Fabric-Arbeitsbereich und seehaus.
  • Ein Azure Databricks-Premium-Arbeitsbereich.
  • Ein Dienstprinzipal mit mindestens der Rollenzuweisung des Arbeitsbereichs "Mitwirkender ".
  • Datenbankgeheimnisse oder Azure Key Vault (AKV), um geheime Schlüssel zu speichern und abzurufen. In diesem Beispiel werden Databricks-Geheimnisse verwendet.

Verbindung zu OneLake herstellen mithilfe von serverlosem Databricks-Compute

Mithilfe von Databricks serverless compute können Sie Workloads ausführen, ohne einen Cluster bereitzustellen. Gemäß der Databricks serverlosen Dokumentation, um die Konfiguration von Spark auf serverlosen Compute zu automatisieren, ermöglicht Databricks Serverless nur die Konfiguration einer Teilmenge der unterstützten Spark-Eigenschaften.

Hinweis

Diese Einschränkung gilt nicht nur für Azure Databricks. Databricks serverlose Implementierungen auf Amazon Web Services (AWS) und Google Cloud weisen das gleiche Verhalten auf.

Wenn Sie versuchen, eine nicht unterstützte Spark-Konfiguration in einem Notizbuch zu ändern oder festzulegen, das mit serverloser Datenverarbeitung von Databricks verknüpft ist, gibt das System einen CONFIG_NOT_AVAILABLE Fehler zurück.

Screenshot mit fehlermeldung, wenn ein Benutzer versucht, nicht unterstützte Spark config in serverless compute zu ändern.

OneLake unterstützt eingehende Konnektivität von Databricks serverless compute. Sie können von Databricks Serverless Compute aus eine Verbindung zu OneLake herstellen, wenn Sie über einen geeigneten Zugriff verfügen und ein Netzwerkpfad zwischen Databricks Serverless Compute und OneLake besteht. Stellen Sie bei Databricks ohne Server sicher, dass Ihr Code keine nicht unterstützten Spark-Eigenschaften ändert.

Erstellen Ihres Notizbuchs

  1. Erstellen Sie ein Notizbuch im Databricks-Arbeitsbereich, und verknüpfen Sie es mit serverloser Rechenleistung.

    Screenshot, der zeigt, wie Sie das Databricks-Notizbuch mit serverloser Berechnung verbinden.

  2. Importieren Sie Python-Module – verwenden Sie in diesem Beispiel drei Module:

    • msal ist Microsoft Authentication Library (MSAL) und soll Entwicklern helfen, die Microsoft Identity Platform-Authentifizierung in ihre Anwendungen zu integrieren.
    • Das Anforderungsmodul wird verwendet, um HTTP-Anforderungen mithilfe von Python auszuführen.
    • Delta Lake wird verwendet, um Delta Lake-Tabellen mithilfe von Python zu lesen und zu schreiben.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Deklarieren Sie Variablen für den Microsoft Entra-Mandanten einschließlich Anwendungs-ID. Verwenden Sie die Mandanten-ID des Mandanten, in dem Microsoft Fabric bereitgestellt wird.

    # 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. Deklarieren Sie Fabric-Arbeitsbereichsvariablen.

    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. Initialisieren Sie den Client, um ein Token abzurufen.

    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. Eine Delta-Tabelle aus OneLake lesen

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

    Hinweis

    Der Dienstprinzipal verfügt über die Arbeitsbereichszuweisung "Mitwirkender ", und Sie können sie verwenden, um Daten zurück in OneLake zu schreiben.

Nachdem Sie die vorstehenden Schritte ausgeführt haben, können Sie Daten aus OneLake lesen, indem Sie Databricks ein Notizbuch verwenden, das mit serverloser Berechnung verbunden ist.