Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:✅ Fabric Data Engineering and Data Science
L'API Fabric Livy consente di inviare processi batch e sessioni Spark da un client remoto direttamente al compute Spark di Fabric, senza utilizzare il portale di Fabric. In questo articolo si crea un lakehouse, si esegue l'autenticazione con un token Microsoft Entra, si individua l'endpoint dell'API Livy e si invia e si monitora un processo di sessione Spark.
Prerequisiti
Fabric capacità Premium o di prova con un Lakehouse
Abilitare l'impostazione Admin tenant per l'API Livy
Un client remoto, ad esempio Visual Studio Code con supporto jupyter notebook, PySpark e Libreria di Autenticazione Microsoft (MSAL) per Python
O un token dell'app Microsoft Entra. Registrare un'applicazione con il Microsoft Identity Platform
In alternativa, un token Microsoft Entra SPN (principale del servizio). Aggiungere e gestire le credenziali dell'applicazione in Microsoft Entra ID
Scegliere un client API REST
È possibile interagire con l'API Livy da qualsiasi client che supporta le richieste HTTP, inclusi strumenti come curl o qualsiasi linguaggio con una libreria HTTP. Gli esempi in questo articolo usano Visual Studio Code con Jupyter Notebook, PySpark e Libreria di Autenticazione Microsoft (MSAL) per Python.
Come autorizzare le richieste dell'API Livy
Per usare l'API Livy, è necessario autenticare le richieste usando Microsoft Entra ID. Sono disponibili due metodi di autorizzazione:
Entra SPN Token (principal del servizio): l'applicazione esegue l'autenticazione come sé stessa usando credenziali come un segreto del client o un certificato. Questo metodo è adatto per processi automatizzati e servizi in background in cui non è necessaria alcuna interazione dell'utente.
Entra app token (Delegato): l'applicazione agisce per conto di un utente registrato. Questo metodo è adatto quando si vuole che l'applicazione acceda alle risorse con le autorizzazioni dell'utente autenticato.
Scegliere il metodo di autorizzazione più adatto allo scenario e seguire la sezione corrispondente di seguito.
Come autorizzare le richieste dell'API Livy con un token SPN Microsoft Entra
Per usare Fabric API, inclusa l'API Livy, è prima necessario creare un'applicazione Microsoft Entra e creare un segreto e usarlo nel codice. L'applicazione deve essere registrata e configurata in modo adeguato per eseguire chiamate API su Fabric. Per altre informazioni, vedere Aggiungere e gestire le credenziali dell'applicazione in Microsoft Entra ID
Dopo aver creato la registrazione dell'app, crea un "client secret".
Quando si crea il segreto del client, assicurarsi di copiare il valore. Questa operazione è necessaria più avanti nel codice e il segreto non può essere più visualizzato. Sono necessari anche l'ID applicazione (client) e l'ID della directory (tenant) oltre al segreto nel codice sorgente.
Successivamente, aggiungere l'entità servizio alla tua area di lavoro.
Cercare l'applicazione Microsoft Entra usando l'ID applicazione (client) o il nome, aggiungerla all'area di lavoro e assicurarsi che il principal del servizio disponga delle autorizzazioni del ruolo di Collaboratore.
Come autorizzare le richieste api Livy con un token dell'app Entra
Per usare Fabric API, inclusa l'API Livy, è prima necessario creare un'applicazione Microsoft Entra e ottenere un token. L'applicazione deve essere registrata e configurata in modo adeguato per eseguire chiamate API su Fabric. Per ulteriori informazioni, vedere Registrare un'applicazione con la piattaforma di identità Microsoft.
Per eseguire i processi dell'API Livy sono necessarie le autorizzazioni di ambito Microsoft Entra seguenti:
Ambiti necessari
| Ambito | Descrizione |
|---|---|
Lakehouse.Execute.All |
Eseguire operazioni nei Fabric lakehouses. |
Lakehouse.Read.All |
Leggi i metadati del lakehouse. |
Code.AccessFabric.All |
Consente di ottenere i token di accesso per Microsoft Fabric. Obbligatorio per tutte le operazioni dell'API Livy. |
Code.AccessStorage.All |
Consente di ottenere i token di accesso per OneLake e per l'archiviazione di Azure. Obbligatorio per la lettura e la scrittura di dati nei lakehouse. |
Ambiti facoltativi code.*
Aggiungere questi ambiti solo se i processi Spark devono accedere ai servizi di Azure corrispondenti in fase di esecuzione.
| Ambito | Descrizione | Quando utilizzare |
|---|---|---|
Code.AccessAzureKeyvault.All |
Consente di ottenere token di accesso per Azure Key Vault. | Il codice Spark recupera segreti, chiavi o certificati da Azure Key Vault. |
Code.AccessAzureDataLake.All |
Consente di ottenere token di accesso per Azure Data Lake Storage Gen1. | Il codice Spark legge da o scrive su account Azure Data Lake Storage Gen1. |
Code.AccessAzureDataExplorer.All |
Consente di ottenere token di accesso per Esplora dati di Azure (Kusto). | Il codice Spark esegue query o inserisce dati da e verso cluster Esplora dati di Azure. |
Code.AccessSQL.All |
Consente di ottenere token di accesso per Azure SQL. | Il codice Spark deve connettersi ai database Azure SQL. |
Quando si registra l'applicazione, sono necessari sia l'ID applicazione (client) che l'ID directory (tenant).
L'utente autenticato che chiama l'API Livy deve essere un membro dell'area di lavoro in cui si trovano sia l'API che gli elementi dell'origine dati con un ruolo Collaboratore. Per altre informazioni, vedere Concedere agli utenti l'accesso alle aree di lavoro.
Informazioni sugli ambiti Code.* per l'API Livy
Quando i processi Spark vengono eseguiti tramite l'API Livy, gli Code.* ambiti controllano quali servizi esterni il runtime Spark può accedere per conto dell'utente autenticato. Due sono obbligatori; il resto è facoltativo a seconda del carico di lavoro.
Ambiti di Codice obbligatorio.*
| Ambito | Descrizione |
|---|---|
Code.AccessFabric.All |
Consente di ottenere i token di accesso per Microsoft Fabric. Obbligatorio per tutte le operazioni dell'API Livy. |
Code.AccessStorage.All |
Consente di ottenere i token di accesso per OneLake e per l'archiviazione di Azure. Obbligatorio per la lettura e la scrittura di dati nei lakehouse. |
Ambiti facoltativi code.*
Aggiungere questi ambiti solo se i processi Spark devono accedere ai servizi di Azure corrispondenti in fase di esecuzione.
| Ambito | Descrizione | Quando utilizzare |
|---|---|---|
Code.AccessAzureKeyvault.All |
Consente di ottenere token di accesso per Azure Key Vault. | Il codice Spark recupera segreti, chiavi o certificati da Azure Key Vault. |
Code.AccessAzureDataLake.All |
Consente di ottenere token di accesso per Azure Data Lake Storage Gen1. | Il codice Spark legge da o scrive su account Azure Data Lake Storage Gen1. |
Code.AccessAzureDataExplorer.All |
Consente di ottenere token di accesso per Esplora dati di Azure (Kusto). | Il codice Spark esegue query o inserisce dati da e verso cluster Esplora dati di Azure. |
Code.AccessSQL.All |
Consente di ottenere token di accesso per Azure SQL. | Il codice Spark deve connettersi ai database Azure SQL. |
Nota
Gli ambiti Lakehouse.Execute.All e Lakehouse.Read.All sono anch'essi obbligatori, ma non fanno parte della famiglia Code.*. Concedono l'autorizzazione per eseguire operazioni nei lakehouse di Fabric e leggere rispettivamente i metadati.
Come individuare l'endpoint dell'API Livy Fabric
Per accedere all'endpoint Livy è necessario un artefatto Lakehouse. Dopo aver creato Lakehouse, l'endpoint dell'API Livy può trovarsi all'interno del pannello delle impostazioni.
L'endpoint dell'API Livy seguirà questo modello:
https://api.fabric.microsoft.com/v1/workspaces/><ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/
L'URL viene aggiunta con <sessioni> o <batch> a seconda di ciò che si sceglie.
Scaricare i file Swagger dell'API Livy
I file Swagger completi per l'API Livy sono disponibili qui.
Sessioni di concorrenza elevata
Il supporto di concorrenza elevata (HC) consente l'esecuzione simultanea di Spark consentendo ai client di acquisire più contesti di esecuzione indipendenti, denominati sessioni di concorrenza elevata.
Ogni sessione HC rappresenta un contesto di esecuzione logica mappato a un ciclo REPL di Spark (Read-Eval-Print Loop). Le istruzioni Spark inviate in sessioni HC diverse possono essere eseguite simultaneamente.
Questo consente:
- Esecuzione parallela tra sessioni HC
- Utilizzo prevedibile delle risorse
- Isolamento tra richieste simultanee
- Sovraccarico inferiore rispetto alla creazione di una nuova sessione per richiesta
L'uso di una singola sessione per tutte le richieste causa l'esecuzione sequenziale delle istruzioni. La creazione di una nuova sessione per ogni richiesta introduce un sovraccarico non necessario e una sottoutilizzazione delle risorse.
Nota
L'acquisizione della sessione HC non è idempotente. Più richieste di acquisizione con lo stesso sessionTag restituiscono diversi ID sessione HC, anche quando sono basate sulla stessa sessione Livy sottostante.
Per una procedura dettagliata con codice di esempio, vedere Introduzione all'API Livy per Fabric sessioni di concorrenza elevata. Per una panoramica concettuale, vedere Supporto della concorrenza elevata nell'API Fabric Livy.
Inviare processi api Livy
Ora che la configurazione dell'API Livy è stata completata, è possibile scegliere di inviare processi batch o di sessione.
Integrazione con ambienti Fabric
Per impostazione predefinita, questa sessione dell'API Livy viene eseguita nel pool di avvio predefinito per l'area di lavoro. In alternativa, è possibile usare Fabric Ambienti Creare, configurare e usare un ambiente in Microsoft Fabric per personalizzare il pool di Spark usato dalla sessione api Livy per questi processi Spark.
Per usare un ambiente Fabric in una sessione di Livy Spark, aggiornare il codice JSON per includere questo payload.
create_livy_session = requests.post(livy_base_url, headers = headers, json={
"conf" : {
"spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
}
)
Per usare un ambiente Fabric in una sessione batch livy Spark, aggiornare il payload json come illustrato di seguito:
payload_data = {
"name":"livybatchdemo_with"+ newlakehouseName,
"file":"abfss://YourABFSPathToYourPayload.py",
"conf": {
"spark.targetLakehouse": "Fabric_LakehouseID",
"spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID"\"}" # Replace "EnvironmentID" with your environment ID, or remove this line to use starter pools instead of an environment
}
}
Come monitorare la cronologia delle richieste
È possibile usare l'hub di monitoraggio per visualizzare gli invii precedenti dell'API Livy ed eseguire il debug di eventuali errori di invio.
Contenuto correlato
- Documentazione dell'API REST Apache Livy
- Introduzione alle impostazioni di amministratore per la capacità Fabric
- Impostazioni di amministrazione dell'area di lavoro Apache Spark in Microsoft Fabric
- Registrare un'applicazione con il Microsoft Identity Platform
- Microsoft Entra panoramica delle autorizzazioni e del consenso
- Scopi dell'API REST di Fabric
- Informazioni generali sul monitoraggio di Apache Spark
- Dettagli dell'applicazione Apache Spark