Condividi tramite


Integrare OneLake con Azure Databricks

Questo articolo illustra come connettersi a OneLake tramite l'ambiente di calcolo serverless di Azure Databricks.

Prerequisiti

Prima di connettersi, assicurarsi di avere:

  • Un'area di lavoro e un lakehouse di Fabric.
  • Un’area di lavoro Premium di Azure Databricks.
  • Un principale del servizio con almeno l'assegnazione del ruolo del workspace Collaboratore.
  • Segreti nel database o Azure Key Vault (AKV) per memorizzare e recuperare informazioni sensibili. Questo esempio usa i segreti di Databricks.

Collegarsi a OneLake utilizzando il calcolo serverless di Databricks

Usando l'ambiente di calcolo serverless di Databricks, è possibile eseguire carichi di lavoro senza effettuare il provisioning di un cluster. Secondo la documentazione serverless di Databricks, per automatizzare la configurazione di Spark sull'infrastruttura serverless, Databricks serverless consente di configurare solo un sottoinsieme delle proprietà Spark supportate.

Nota

Questa limitazione non è univoca per Azure Databricks. Le implementazioni serverless di Databricks in Amazon Web Services (AWS) e Google Cloud presentano lo stesso comportamento.

Se si tenta di modificare o impostare una configurazione Spark non supportata in un notebook collegato al calcolo serverless di Databricks, il sistema restituisce un errore CONFIG_NOT_AVAILABLE.

Screenshot che mostra il messaggio di errore se un utente tenta di modificare la configurazione Spark non supportata nel serverless compute.

OneLake supporta la connettività in ingresso dal calcolo serverless di Databricks. È possibile connettersi a OneLake dal calcolo serverless di Databricks se si dispone dell'accesso appropriato e esiste un percorso di rete tra il calcolo serverless di Databricks e OneLake. Con Databricks serverless, assicurarsi che il codice non modifichi le proprietà spark non supportate.

Creare il notebook

  1. Creare un notebook nell'area di lavoro di Databricks e collegarlo all'ambiente di calcolo serverless.

    Screenshot che mostra come connettere il notebook di Databricks con elaborazione serverless.

  2. Importare moduli Python: in questo esempio usare tre moduli:

    • msal è Microsoft Authentication Library (MSAL) ed è progettato per aiutare gli sviluppatori a integrare l'autenticazione di Microsoft Identity Platform nelle applicazioni.
    • Il modulo requests viene usato per effettuare richieste HTTP tramite Python.
    • Delta Lake viene usato per leggere e scrivere tabelle Delta Lake usando Python.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Dichiarare le variabili per il tenant di Microsoft Entra, compreso l'ID applicazione. Usare l'ID tenant del tenant in cui viene distribuito Microsoft Fabric.

    # 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. Dichiarare le variabili dell'area di lavoro 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. Inizializzare il client per ottenere un token.

    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. Leggi una tabella delta da OneLake

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

    Nota

    L'entità servizio ha l'assegnazione di ruolo Area di lavoro Collaboratore ed è possibile usarla per scrivere i dati in OneLake.

Dopo aver completato i passaggi precedenti, è possibile leggere i dati da OneLake usando Databricks un notebook collegato al calcolo serverless.