Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:✅ Fabric Data Engineering och Data Science
Med Fabric Livy API kan du skicka Spark-batch- och sessionsjobb från en fjärrklient direkt till Fabric Spark-beräkning, utan att använda Fabric-portalen. I den här artikeln skapar du en Lakehouse, autentiserar med en Microsoft Entra token, identifierar Livy API-slutpunkten och skickar och övervakar ett Spark-sessionsjobb.
Förutsättningar
Fabric Premium- eller utvärderingskapacitet med en Lakehouse
Aktivera inställningar för hyrande klientadministratör för Livy API
En fjärrklient som Visual Studio Code med Stöd för Jupyter Notebook, PySpark och Microsoft Authentication Library (MSAL) för Python
Antingen en Microsoft Entra app-token. Registrera ett program med Microsoft identity platform
Eller en Microsoft Entra SPN (Service Principal)-token. Lägg till och hantera programautentiseringsuppgifter i Microsoft Entra ID
Välj en REST API-klient
Du kan interagera med Livy-API:et från alla klienter som stöder HTTP-begäranden, inklusive verktyg som curl eller valfritt språk med ett HTTP-bibliotek. Exemplen i den här artikeln använder Visual Studio Code med Jupyter Notebooks, PySpark och Microsoft Authentication Library (MSAL) för Python.
Auktorisera Api-begäranden för Livy
Om du vill använda Livy-API:et måste du autentisera dina begäranden med hjälp av Microsoft Entra ID. Det finns två tillgängliga auktoriseringsmetoder:
Entra SPN-token (tjänstens huvudnamn): Programmet autentiserar som sig självt med autentiseringsuppgifter, till exempel en klienthemlighet eller ett certifikat. Den här metoden är lämplig för automatiserade processer och bakgrundstjänster där ingen användarinteraktion krävs.
Entra-apptoken (delegerad): Programmet agerar på uppdrag av en inloggad användare. Den här metoden är lämplig när du vill att programmet ska få åtkomst till resurser med behörigheter för den autentiserade användaren.
Välj den auktoriseringsmetod som passar bäst för ditt scenario och följ motsvarande avsnitt nedan.
Auktorisera Livy API-begäranden med en Microsoft Entra SPN-token
Om du vill arbeta med Fabric API:er, inklusive Livy-API:et, måste du först skapa ett Microsoft Entra program och skapa en hemlighet och använda den hemligheten i koden. Ditt program måste vara registrerat och konfigurerat på lämpligt sätt för att utföra API-anrop mot Fabric. Mer information finns i Lägg till och hantera programautentiseringsuppgifter i Microsoft Entra ID
När du har skapat appregistreringen skapar du en klienthemlighet.
När du skapar en klienthemlighet ska du se till att kopiera värdet. Du behöver detta senare i koden, och hemligheten kan inte visas igen. Du behöver även program-ID:t (klient-ID) och katalog-ID:t (hyresgäst-ID) utöver hemligheten i din kod.
Lägg sedan till tjänstens huvudnamn på din arbetsyta.
Sök efter Microsoft Entra-programmet med hjälp av klientprogram-ID:t eller namnet, lägg till det till arbetsytan och kontrollera att tjänstens tjänstehuvudnamn har Contributor-behörigheter.
Auktorisera Livy API-begäranden med en Entra-apptoken
Om du vill arbeta med Fabric API:er inklusive Livy-API:et måste du först skapa ett Microsoft Entra-program och hämta en token. Ditt program måste vara registrerat och konfigurerat på lämpligt sätt för att utföra API-anrop mot Fabric. Mer information finns i Registrera ett program med Microsoft identity platform.
Följande Microsoft Entra omfångsbehörigheter krävs för att köra Livy API-jobb:
Nödvändiga omfång
| Scope | Beskrivning |
|---|---|
Lakehouse.Execute.All |
Utför operationer i Fabric lakehouses. |
Lakehouse.Read.All |
Läsa metadata för lakehouse. |
Code.AccessFabric.All |
Tillåter hämtning av åtkomsttoken till Microsoft Fabric. Krävs för alla Livy API-åtgärder. |
Code.AccessStorage.All |
Tillåter att åtkomsttoken hämtas till OneLake och Azure lagring. Krävs för att läsa och skriva data i lakehouses. |
Valfri kod.* omfång
Lägg bara till dessa omfång om dina Spark-jobb behöver komma åt motsvarande Azure tjänster vid körning.
| Scope | Beskrivning | När det bör användas |
|---|---|---|
Code.AccessAzureKeyvault.All |
Tillåter att åtkomsttoken hämtas till Azure Key Vault. | Spark-koden hämtar hemligheter, nycklar eller certifikat från Azure Key Vault. |
Code.AccessAzureDataLake.All |
Tillåter att åtkomsttoken hämtas till Azure Data Lake Storage Gen1. | Spark-koden läser från eller skriver till Azure Data Lake Storage Gen1 konton. |
Code.AccessAzureDataExplorer.All |
Tillåter att åtkomsttoken hämtas till Azure Data Explorer (Kusto). | Spark-koden frågar eller matar in data till/från Azure Data Explorer kluster. |
Code.AccessSQL.All |
Tillåter att åtkomsttoken hämtas till Azure SQL. | Spark-koden måste ansluta till Azure SQL databaser. |
När du registrerar ditt program behöver du både klientprogram-ID och klientorganisationens katalog-ID.
Den autentiserade användaren som anropar Livy-API:et måste vara medlem i arbetsytan där både API:et och datakällobjekten finns med rollen Medverkande. Mer information finns i Ge användare åtkomst till arbetsytor.
Förstå Code.* omfånget för Livy-API:n
När dina Spark-jobb körs via Livy-API:et styr omfången Code.* vilka externa tjänster Spark Runtime kan komma åt för den autentiserade användarens räkning. Två krävs; resten är valfria beroende på din arbetsbelastning.
Nödvändig kod.* omfång
| Scope | Beskrivning |
|---|---|
Code.AccessFabric.All |
Tillåter hämtning av åtkomsttoken till Microsoft Fabric. Krävs för alla Livy API-åtgärder. |
Code.AccessStorage.All |
Tillåter att åtkomsttoken hämtas till OneLake och Azure lagring. Krävs för att läsa och skriva data i lakehouses. |
Valfri kod.* omfång
Lägg bara till dessa omfång om dina Spark-jobb behöver komma åt motsvarande Azure tjänster vid körning.
| Scope | Beskrivning | När det bör användas |
|---|---|---|
Code.AccessAzureKeyvault.All |
Tillåter att åtkomsttoken hämtas till Azure Key Vault. | Spark-koden hämtar hemligheter, nycklar eller certifikat från Azure Key Vault. |
Code.AccessAzureDataLake.All |
Tillåter att åtkomsttoken hämtas till Azure Data Lake Storage Gen1. | Spark-koden läser från eller skriver till Azure Data Lake Storage Gen1 konton. |
Code.AccessAzureDataExplorer.All |
Tillåter att åtkomsttoken hämtas till Azure Data Explorer (Kusto). | Spark-koden frågar eller matar in data till/från Azure Data Explorer kluster. |
Code.AccessSQL.All |
Tillåter att åtkomsttoken hämtas till Azure SQL. | Spark-koden måste ansluta till Azure SQL databaser. |
Kommentar
Omfången Lakehouse.Execute.All och Lakehouse.Read.All krävs också men ingår inte i Code.* familjen. De ger behörighet att köra åtgärder i och läsa metadata från Fabric lakehouses respektive.
Så här identifierar du Fabric Livy API-slutpunkt
En Lakehouse-artefakt krävs för att få åtkomst till Livy-slutpunkten. När Lakehouse har skapats kan Livy API-slutpunkten finnas i inställningspanelen.
Slutpunkten för Livy-API:et skulle följa det här mönstret:
https://api.fabric.microsoft.com/v1/workspaces/><ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/
URL:en läggs till med antingen <sessioner> eller <batchar> beroende på vad du väljer.
Ladda ned Livy API Swagger-filerna
De fullständiga swagger-filerna för Livy-API:et finns här.
Sessioner med hög samtidighet
Stöd för hög samtidighet (HC) möjliggör samtidig Spark-körning genom att tillåta klienter att hämta flera oberoende körningskontexter, så kallade sessioner med hög samtidighet.
Varje HC-session representerar en logisk körningskontext som mappar till en Spark REPL (Read-Eval-Print Loop). Spark-instruktioner som skickas under olika HC-sessioner kan köras samtidigt.
På så sätt kan du:
- Parallell körning över HC-sessioner
- Förutsägbar resursanvändning
- Isolering mellan samtidiga begäranden
- Lägre omkostnader jämfört med att skapa en ny session per begäran
Om du använder en enda session för alla begäranden körs instruktioner sekventiellt. Att skapa en ny session för varje begäran medför onödiga omkostnader och resursunderutnyttjande.
Kommentar
Förvärv av HC-sessioner är inte idempotent. Flera förvärvningsförfrågningar med samma sessionTag returnerar olika HC-sessions-ID:er, även om de stöds av samma underliggande Livy-session.
En stegvis genomgång med exempelkod finns i Kom igång med Livy API för Fabric High Concurrency Sessions. En konceptöversikt finns i High concurrency support in the Fabric Livy API.
Skicka ett Livy API-jobb
Nu när installationen av Livy-API:et är klar kan du välja att skicka batch- eller sessionsjobb.
Integrering med Fabric miljöer
Som standard körs den här Livy API-sessionen mot standardstartpoolen för arbetsytan. Du kan också använda Fabric Miljöer Skapa, konfigurera och använda en miljö i Microsoft Fabric för att anpassa Spark-poolen som Livy API-sessionen använder för dessa Spark-jobb.
Om du vill använda en Fabric miljö i en Livy Spark-session uppdaterar du json så att den innehåller den här nyttolasten.
create_livy_session = requests.post(livy_base_url, headers = headers, json={
"conf" : {
"spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
}
)
Om du vill använda en Fabric miljö i en Livy Spark-batchsession uppdaterar du json-nyttolasten enligt följande:
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
}
}
Så här övervakar du begärandehistoriken
Du kan använda Övervakningshubben för att se dina tidigare Livy API-inlämningar och felsöka eventuella inskickade fel.
Relaterat innehåll
- Dokumentation om Apache Livy REST API
- Kom igång med administratörsinställningar för din Fabric-kapacitet
- inställningar för administration av Apache Spark-arbetsytor i Microsoft Fabric
- Registrera ett program med Microsoft identity platform
- Microsoft Entra behörighet och medgivandeöversikt
- Fabric REST API-omfång
- Översikt över Apache Spark-övervakning
- Information om Apache Spark-program