Del via


Brug Livy-API'en til at sende og udføre Spark-sessionsjob med brugerlegitimationsoplysninger

Gælder for:✅ Fabric Data Engineering og Data Science

Kom i gang med Livy API for Fabric Data Engineering ved at oprette et Lakehouse; autentificering med et Microsoft Entra-token; opdage Livy API-endpointet; indsende enten batch- eller sessionsjobs fra en fjernklient til Fabric Spark compute; og overvåge resultaterne.

Forudsætninger

Valg af en REST API-klient

Du kan bruge forskellige programmeringssprog eller GUI-klienter til at interagere med REST API-slutpunkter. I denne artikel bruger vi Visual Studio Code. Visual Studio Code skal konfigureres med Jupyter Notebooks, PySpark og Microsoft Authentication Library (MSAL) til Python

Sådan autoriserer du Livy API-anmodningerne

For at bruge Livy API'en skal du autentificere dine anmodninger med Microsoft Entra ID. Der findes to autorisationsmetoder:

  • Entra SPN Token (Service Principal): Applikationen autentificerer sig selv ved hjælp af legitimationsoplysninger som en klienthemmelighed eller certifikat. Denne metode er velegnet til automatiserede processer og baggrundstjenester, hvor der ikke kræves brugerinteraktion.

  • Entra app-token (Delegeret): Applikationen handler på vegne af en indlogget bruger. Denne metode er egnet, når du ønsker, at applikationen skal tilgå ressourcer med tilladelserne fra den autentificerede bruger.

Vælg den autorisationsmetode, der passer bedst til din situation, og følg det tilsvarende afsnit nedenfor.

Sådan godkender du Livy API-anmodninger med et Entra SPN-token

For at arbejde med Fabric API'er, inklusive Livy API'en, skal du først oprette en Microsoft Entra-applikation og oprette en hemmelighed og bruge den hemmelighed i din kode. Dit program skal registreres og konfigureres korrekt for at kunne udføre API-kald mod Fabric. For mere information, se Tilføj og administrer ansøgningsoplysninger i Microsoft Entra ID

Når du har oprettet appregistreringen, skal du oprette en klienthemmelighed.

Skærmbillede, der viser Registrering af Entra-app og tilføjelse af en klienthemmelighed.

  1. Når du opretter klienthemmeligheden, skal du sørge for at kopiere værdien. Du skal bruge dette senere i koden, og hemmeligheden kan ikke ses igen. Du skal også bruge program-id'et (klient) og mappen (lejer-id) ud over hemmeligheden i din kode.

  2. Dernæst tilføjer du serviceprincippet til dit arbejdsområde.

    Skærmbillede, der viser indstillinger for Administrer adgang Lakehouse.

  3. Søg efter Entra-applikationen ved at bruge applikations-ID (klient) ID eller navn, tilføj den til arbejdsområdet, og sørg for, at serviceprincipalen har bidragyderrettigheder.

    Skærmbillede, der viser tilføjelse af den nye SPN-tjenesteprincipal til arbejdsområdet.

Sådan godkender du Livy API-anmodninger med et Entra-apptoken

For at arbejde med Fabric API'er, inklusive Livy API'en, skal du først oprette en Microsoft Entra-applikation og skaffe et token. Dit program skal registreres og konfigureres korrekt for at kunne udføre API-kald mod Fabric. Du kan få flere oplysninger under Registrer et program med Microsoft-identitetsplatform.

Der kræves mange Microsoft Entra scope-tilladelser for at udføre Livy-jobs. I dette eksempel bruges simpel Spark-kode + lageradgang + SQL:

  • Code.AccessAzureDataExplorer.All

  • Code.AccessAzureDataLake.All

  • Code.AccessAzureKeyvault.All

  • Code.AccessFabric.All

  • Code.AccessStorage.All

  • Item.ReadWrite.All

  • Lakehouse.Execute.All

  • Workspace.ReadWrite.All

    Skærmbillede, der viser Livy API-tilladelser i Microsoft Entra admin center.

Bemærk

Under offentlig prøveversion kan disse områder blive ændret, når vi tilføjer nogle flere detaljerede områder. Når disse områdeændringer sker, kan din Livy-app gå i stykker. Kontrollér denne liste, da den opdateres med de ekstra områder.

Nogle kunder ønsker mere detaljerede tilladelser end den tidligere liste. Du kan fjerne Item.ReadWrite.All og erstatte med disse mere detaljerede områdetilladelser:

  • Code.AccessAzureDataExplorer.All
  • Code.AccessAzureDataLake.All
  • Code.AccessAzureKeyvault.All
  • Code.AccessFabric.All
  • Code.AccessStorage.All
  • Lakehouse.Execute.All
  • Lakehouse.ReadWrite.All
  • Workspace.ReadWrite.All
  • Notebook.ReadWrite.All
  • SparkJobDefinition.ReadWrite.All
  • MLModel.ReadWrite.All
  • MLExperiment.ReadWrite.All
  • Dataset.ReadWrite.All

Når du registrerer dit program, skal du både bruge program-id'et (klient)-id'et og mappe-id'et (lejeren).

Skærmbillede, der viser oversigt over Livy API-appen i Microsoft Entra admin center.

Den godkendte bruger, der kalder Livy-API'en, skal være medlem af arbejdsområdet, hvor både API- og datakildeelementer er placeret med rollen Bidragyder. Du kan få flere oplysninger under Giv brugere adgang til arbejdsområder.

Sådan finder du Fabric Livy API-slutpunktet

Der kræves en Lakehouse-artefakt for at få adgang til Livy-slutpunktet. Når Lakehouse er oprettet, kan Livy API-slutpunktet placeres i indstillingspanelet.

Skærmbillede, der viser Livy API-slutpunkter i indstillingerne for Lakehouse.

Slutpunktet for Livy-API'en følger dette mønster:

https://api.fabric.microsoft.com/v1/workspaces/><ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/

URL-adressen tilføjes med enten <sessioner> eller <batches> , afhængigt af hvad du vælger.

Download Livy API Swagger-filerne

De fulde swagger-filer til Livy-API'en er tilgængelige her.

Send et Livy API-job

Nu, hvor konfigurationen af Livy-API'en er fuldført, kan du vælge at sende enten batch- eller sessionsjob.

Integration med Fabric-miljøer

Denne Livy API-session kører som standard i forhold til standardstartgruppen for arbejdsområdet. Alternativt kan du bruge Fabric Environments Create, configur og brug et miljø i Microsoft Fabric til at tilpasse Spark-poolen, som Livy API-sessionen bruger til disse Spark-jobs.

Hvis du vil bruge et Fabric-miljø i en Livy Spark-session, skal du blot opdatere json'en for at inkludere denne nyttedata.

create_livy_session = requests.post(livy_base_url, headers = headers, json={
    "conf" : {
        "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
    }
)

Hvis du vil bruge et Fabric-miljø i en Livy Spark-batchsession, skal du blot opdatere json-nyttedataene som vist nedenfor.

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ådan overvåger du anmodningsoversigten

Du kan bruge Overvågningshub til at se dine tidligere Livy API-indsendelser og foretage fejlfinding af eventuelle indsendelsesfejl.

Skærmbillede, der viser tidligere Livy API-indsendelser i overvågningshubben.