Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Questo scenario illustra come connettersi a OneLake tramite Azure Databricks. Dopo aver completato questa esercitazione, sarà possibile leggere e scrivere in un lakehouse di Microsoft Fabric dall'area di lavoro di Databricks di Azure.
Prerequisiti
Prima di connettersi, è necessario disporre di:
- Un'area di lavoro e un lakehouse di Fabric.
- Un’area di lavoro Premium di Azure Databricks. Solo le aree di lavoro di Databricks Premium di Azure supportano il pass-through delle credenziali di Microsoft Entra, necessario per questo scenario.
Configurare l'area di lavoro di Databricks
Aprire l'area di lavoro di Databricks di Azure e selezionare Crea>Cluster.
Per eseguire l'autenticazione a OneLake con l'identità di Microsoft Entra, è necessario abilitare il pass-through delle credenziali di Azure Data Lake Storage (ADLS) nel cluster nelle opzioni avanzate.
Nota
È anche possibile connettere Databricks a OneLake usando un'entità servizio. Per altre informazioni sull'autenticazione di Azure Databricks con un'entità servizio, vedere Gestire le entità servizio.
Creare il cluster con i parametri preferiti. Per altre informazioni sulla creazione di cluster di Databricks, vedere Configura cluster – Azure Databricks.
Aprire un notebook e connetterlo al cluster appena creato.
Creare il notebook
Andare al lakehouse di Fabric e copiare il percorso di Azure Blob Filesystem (ABFS) nel lakehouse. È possibile trovarlo nel riquadro Proprietà.
Nota
Azure Databricks supporta solo il driver Azure Blob Filesystem durante la lettura e la scrittura in ADLS Gen2 e OneLake:
abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/.Salvare il percorso del lakehouse nel notebook di Databricks. Questo lakehouse è dove si scrivono i dati elaborati successivamente:
oneLakePath = 'abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/myLakehouse.lakehouse/Files/'Caricare dati da un set di dati pubblico di Databricks in un dataframe. È anche possibile leggere un file da un'altra posizione in Fabric o scegliere un file da un altro account ADLS Gen2 già proprietario.
yellowTaxiDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/databricks-datasets/nyctaxi/tripdata/yellow/yellow_tripdata_2019-12.csv.gz")Filtrare, trasformare o preparare i dati. Per questo scenario, è possibile ridurre il set di dati per un caricamento più rapido, unirlo ad altri set di dati o filtrare in base a risultati specifici.
filteredTaxiDF = yellowTaxiDF.where(yellowTaxiDF.fare_amount<4).where(yellowTaxiDF.passenger_count==4) display(filteredTaxiDF)Scrivere il dataframe filtrato nel lakehouse di Fabric usando il percorso di OneLake.
filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)Verificare che i dati siano stati scritti correttamente leggendo il file appena caricato.
lakehouseRead = spark.read.format('csv').option("header", "true").load(oneLakePath) display(lakehouseRead.limit(10))
Questa operazione completa la configurazione e ora è possibile leggere e scrivere dati in Fabric usando Azure Databricks.
Connessione a OneLake tramite l'ambiente di calcolo serverless di Databricks
Databricks serverless compute consente di eseguire carichi di lavoro senza effettuare il provisioning di un cluster. Come indicato nella documentazione serverless di Databricks, per automatizzare la configurazione di Spark in un ambiente di calcolo serverless, Databricks serverless non consente la configurazione delle proprietà spark esterne alle proprietà supportate elencate qui.
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.
OneLake supporta la connettività in ingresso dal calcolo serverless di Databricks. È possibile connettersi a OneLake (dal calcolo serverless di Databricks) purché sia disponibile l'accesso appropriato ed è disponibile un percorso di rete tra il calcolo serverless di Databricks e OneLake. Con Databricks serverless, è necessario assicurarsi che il codice non modifichi le proprietà spark non supportate.
Prerequisiti
Prima di connettersi, è necessario disporre di:
- Un'area di lavoro e un lakehouse di Fabric.
- Un’area di lavoro Premium di Azure Databricks.
- Un principale del servizio con un'assegnazione minima del ruolo di Collaboratore nell'area di lavoro.
- Segreti nel database o Azure Key Vault (AKV) per memorizzare e recuperare informazioni sensibili. Questo esempio usa i segreti di Databricks.
Creare il notebook
Creare un notebook nell'area di lavoro di Databricks e collegarlo all'ambiente di calcolo serverless.
Importare moduli Python: in questo esempio si usano 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 con Python.
- Delta Lake viene usato per leggere e scrivere tabelle Delta Lake con Python.
from msal import ConfidentialClientApplication import requests from deltalake import DeltaTableDichiarare 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>")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}"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']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.
Questa operazione completa la configurazione ed è ora possibile leggere i dati da OneLake usando Databricks un notebook collegato al calcolo serverless.