Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅ Fabric Data Engineering og Data Science
Fabric Livy-API-et lar deg sende inn Spark-batch- og sessionjobber fra en ekstern klient direkte til Fabric Spark-beregning, uten å bruke Fabric-portalen. I denne artikkelen oppretter du et Lakehouse, autentiserer med en Microsoft Entra-token, oppdager Livy API-endepunktet, og sender inn og overvåker en Spark-sesjonsjobb.
Forutsetning
Fabric Premium eller prøvekapasitet med en Lakehouse
Aktiver Tenant Admin-innstillingen for Livy API
En ekstern klient som Visual Studio Code med støtte for Jupyter notebook, PySpark og Microsoft Authentication Library (MSAL) for Python
Enten en Microsoft Entra-app-token. Registrer en søknad hos Microsofts identitetsplattform
Eller et Microsoft Entra SPN (Service Principal)-token. Legg til og administrer applikasjonslegitimasjon i Microsoft Entra ID
Velg en REST API-klient
Du kan interagere med Livy API fra hvilken som helst klient som støtter HTTP-forespørsler, inkludert verktøy som curl eller hvilket som helst språk med et HTTP-bibliotek. Eksemplene i denne artikkelen bruker Visual Studio Code med Jupyter Notebooks, PySpark, og Microsoft Authentication Library (MSAL) for Python.
Hvordan autorisere Livy API-forespørsler
For å bruke Livy API må du autentisere forespørslene dine med Microsoft Entra ID. Det finnes to autoriseringsmetoder tilgjengelig:
Entra SPN Token (Service Principal): Applikasjonen autentiserer seg som seg selv ved hjelp av legitimasjoner som en klienthemmelighet eller et sertifikat. Denne metoden egner seg for automatiserte prosesser og bakgrunnstjenester hvor det ikke kreves brukerinteraksjon.
Entra app-token (Delegert): Applikasjonen handler på vegne av en innlogget bruker. Denne metoden er egnet når du ønsker at applikasjonen skal få tilgang til ressurser med tillatelsene til den autentiserte brukeren.
Velg den autorisasjonsmetoden som passer best for din situasjon, og følg den tilhørende delen nedenfor.
Hvordan autorisere Livy API-forespørsler med en Microsoft Entra SPN Token
For å jobbe med Fabric API-er, inkludert Livy API, må du først lage en Microsoft Entra-applikasjon og lage en hemmelighet og bruke den hemmeligheten i koden din. Applikasjonen din må være registrert og konfigurert tilstrekkelig for å utføre API-kall mot Fabric. For mer informasjon, se Legg til og administrer applikasjonsinformasjon i Microsoft Entra ID
Når du har opprettet appregistreringen, oppretter du en klienthemmelighet.
Når du oppretter klienthemmeligheten, må du passe på å kopiere verdien. Du trenger dette senere i koden, og hemmeligheten kan ikke ses på nytt. Du trenger også applikasjons-ID-en (klient-ID-en) og katalogen (leietaker-ID) i tillegg til hemmeligheten i koden din.
Legg deretter til tjenesteprinsippet i arbeidsområdet ditt.
Søk etter Microsoft Entra-applikasjonen ved å bruke Application (klient) ID eller navn, legg den til i arbeidsområdet, og sørg for at tjenesteprincipalen har bidragstillatelser.
Slik godkjenner du Livy API-forespørsler med et Entra-apptoken
For å jobbe med Fabric API-er, inkludert Livy API, må du først lage en Microsoft Entra-applikasjon og skaffe en token. Applikasjonen din må være registrert og konfigurert tilstrekkelig for å utføre API-kall mot Fabric. For mer informasjon, se Registrer en søknad hos Microsofts identitetsplattform.
Følgende Microsoft Entra-scope-tillatelser kreves for å utføre Livy API-jobber:
Påkrevde teleskoper
| Omfang | Beskrivelse |
|---|---|
Lakehouse.Execute.All |
Utfør operasjoner i Fabric lakehouses. |
Lakehouse.Read.All |
Les metadata fra Lakehouse. |
Code.AccessFabric.All |
Gjør det mulig å få tilgang til Microsoft Fabric. Påkrevd for alle Livy API-operasjoner. |
Code.AccessStorage.All |
Gjør det mulig å få tilgang til OneLake og Azure-lagring. Påkrevd for å lese og skrive data i innsjøhus. |
Valgfrie kode.* omfang
Legg til disse scopene kun hvis Spark-jobbene dine trenger tilgang til de tilsvarende Azure-tjenestene under kjøring.
| Omfang | Beskrivelse | Når den brukes |
|---|---|---|
Code.AccessAzureKeyvault.All |
Gjør det mulig å få tilgang til Azure Key Vault. | Din Spark-kode henter hemmeligheter, nøkler eller sertifikater fra Azure Key Vault. |
Code.AccessAzureDataLake.All |
Gjør det mulig å få tilgang til Azure Data Lake Storage Gen1. | Spark-koden din leser fra eller skriver til Azure Data Lake Storage Gen1-kontoer. |
Code.AccessAzureDataExplorer.All |
Gjør det mulig å få tilgang til Azure Data Explorer (Kusto). | Spark-koden din spør eller importerer data til/fra Azure Data Explorer-klynger. |
Code.AccessSQL.All |
Gjør det mulig å få tilgang til Azure SQL. | Spark-koden din må kobles til Azure SQL-databaser. |
Når du registrerer applikasjonen din, trenger du både applikasjons-ID-en (klient) og katalog-ID-en (leietaker-ID-en).
Den godkjente brukeren som kaller Livy-API-en, må være et arbeidsområdemedlem der både API-en og datakildeelementene er plassert med en bidragsyterrolle. Hvis du vil ha mer informasjon, kan du se Gi brukere tilgang til arbeidsområder.
Forståelse av Code.*-omfang for Livy API-et
Når Spark-jobbene dine kjører via Livy-API-et, kontrollerer scopene Code.* hvilke eksterne tjenester Spark Runtime kan få tilgang til på vegne av den autentiserte brukeren. To er påkrevd; Resten er valgfritt, avhengig av arbeidsmengden din.
Påkrevd Code.* omfang
| Omfang | Beskrivelse |
|---|---|
Code.AccessFabric.All |
Gjør det mulig å få tilgang til Microsoft Fabric. Påkrevd for alle Livy API-operasjoner. |
Code.AccessStorage.All |
Gjør det mulig å få tilgang til OneLake og Azure-lagring. Påkrevd for å lese og skrive data i innsjøhus. |
Valgfrie kode.* omfang
Legg til disse scopene kun hvis Spark-jobbene dine trenger tilgang til de tilsvarende Azure-tjenestene under kjøring.
| Omfang | Beskrivelse | Når den brukes |
|---|---|---|
Code.AccessAzureKeyvault.All |
Gjør det mulig å få tilgang til Azure Key Vault. | Din Spark-kode henter hemmeligheter, nøkler eller sertifikater fra Azure Key Vault. |
Code.AccessAzureDataLake.All |
Gjør det mulig å få tilgang til Azure Data Lake Storage Gen1. | Spark-koden din leser fra eller skriver til Azure Data Lake Storage Gen1-kontoer. |
Code.AccessAzureDataExplorer.All |
Gjør det mulig å få tilgang til Azure Data Explorer (Kusto). | Spark-koden din spør eller importerer data til/fra Azure Data Explorer-klynger. |
Code.AccessSQL.All |
Gjør det mulig å få tilgang til Azure SQL. | Spark-koden din må kobles til Azure SQL-databaser. |
Merk
Og-skopiene Lakehouse.Execute.AllLakehouse.Read.All er også påkrevd, men er ikke en del av Code.* familien. De gir tillatelse til å utføre operasjoner i og lese metadata fra Fabric-innsjøhus henholdsvis.
Hvordan oppdage Fabric Livy API-endepunktet
En Lakehouse-artefakt er nødvendig for å få tilgang til Livy-endepunktet. Når Lakehouse er opprettet, kan Livy API-endepunktet være plassert i innstillingspanelet.
Endepunktet for Livy-API-en følger dette mønsteret:
https://api.fabric.microsoft.com/v1/workspaces/><ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/
NETTADRESSEn legges til med økter <> eller <grupper>, avhengig av hva du velger.
Last ned Livy API Swagger-filene
De fullstendige swagger-filene for Livy-API-en er tilgjengelige her.
Økter med høy samtidighet
Støtte for høy samtidighet (HC) muliggjør samtidig Spark-utførelse ved å la klienter tilegne seg flere uavhengige utførelseskontekster, kalt økter med høy samtidighet.
Hver HC-økt representerer en logisk utførelseskontekst som kartlegges til en Spark REPL (Read-Eval-Print Loop). Spark-uttalelser sendt inn under ulike HC-økter kan utføres samtidig.
Dette tillater:
- Parallell utførelse på tvers av HC-økter
- Forutsigbar ressursbruk
- Isolasjon mellom samtidige forespørsler
- Lavere overhead sammenlignet med å opprette en ny økt per forespørsel
Å bruke én enkelt økt for alle forespørsler gjør at setningene kjøres sekvensielt. Å opprette en ny økt for hver forespørsel medfører unødvendig overhead og ressursunderutnyttelse.
Merk
HC-innsamling er ikke idempotent. Flere acquire-forespørsler med samme sessionTag gir forskjellige HC-sesjons-IDer, selv når de støttes av samme underliggende Livy-økt.
For en steg-for-steg-gjennomgang med eksempelkode, se Kom i gang med Livy API for Fabric High Concurrency Sessions. For en konseptuell oversikt, se Høy samtidighetsstøtte i Fabric Livy API.
Sende inn en Livy API-jobb
Nå som oppsettet av Livy-API-en er fullført, kan du velge å sende inn enten satsvise jobber eller øktjobber.
Integrasjon med Fabric-miljøer
Som standard kjører denne Livy API-økten mot standard startutvalg for arbeidsområdet. Alternativt kan du bruke Fabric miljøer Create, configur og bruk et miljø i Microsoft Fabric for å tilpasse Spark-poolen som Livy API-sesjonen bruker for disse Spark-jobbene.
For å bruke et Fabric Environment i en Livy Spark-økt, oppdater json-filen til å inkludere denne nyttelasten.
create_livy_session = requests.post(livy_base_url, headers = headers, json={
"conf" : {
"spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
}
)
For å bruke et Fabric Environment i en Livy Spark-batchøkt, oppdater json-payloaden som vist her:
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
}
}
Slik overvåker du forespørselsloggen
Du kan bruke overvåkingshuben til å se dine tidligere Livy API-innsendinger, og feilsøke eventuelle innsendingsfeil.
Relatert innhold
- Apache Livy REST API-dokumentasjon
- Kom i gang med administrasjonsinnstillinger for din Fabric kapasitet
- Apache Spark arbeidsområdeadministrasjonsinnstillinger i Microsoft Fabric
- Registrer en søknad hos Microsofts identitetsplattform
- Microsoft Entra oversikt over tillatelse og samtykke
- Fabric REST API Scopes
- Oversikt over Apache Spark-overvåking
- Apache Spark-programdetalj