Jaa


Livy-ohjelmointirajapinnan avulla voit lähettää ja suorittaa Spark-istuntotöitä käyttäjän tunnistetiedoilla

Sovellettavissa: ✅ Fabric Data Engineering and Data Science

Fabric Livy API mahdollistaa Spark-erä- ja sessiotöiden lähettämisen etäasiakkaalta suoraan Fabric Spark -laskentaan ilman Fabric-portaalin käyttöä. Tässä artikkelissa luot Lakehousen, todennat Microsoft Entra -tokenilla, löydät Livy API -päätepisteen sekä lähetät ja valvot Spark-istuntotyötä.

Edellytykset

  • Fabric Premium tai koekapasiteetti Lakehousen kanssa

  • Ota käyttöön Tenant Admin -asetus Livy API:lle

  • Etäasiakas, kuten Visual Studio Code, jossa on Jupyter-muistikirjatuki, PySpark ja Microsoft Authentication Library (MSAL) Python

  • Joko Microsoft Entra -sovellustoken. Rekisteröi hakemus Microsoftin käyttäjätietoympäristö

  • Tai Microsoft Entra SPN (Service Principal) -tokenin. Lisää ja hallinnoi sovellustunnistetietoja Microsoft Entra ID

Valitse REST API -asiakas

Voit olla vuorovaikutuksessa Livy-rajapinnan kanssa mistä tahansa HTTP-pyyntöjä tukevasta asiakkaasta, mukaan lukien työkalut kuten curl tai mikä tahansa HTTP-kirjasto sisältävä kieli. Tämän artikkelin esimerkeissä käytetään Visual Studio Code yhdessä Jupyter Notebooks, PySpark ja Microsoft Authentication Library (MSAL) kanssa Python kanssa.

Kuinka valtuuttaa Livy API -pyynnöt

Livy API:n käyttämiseksi sinun täytyy todentaa pyyntösi Microsoft Entra ID:llä. Saatavilla on kaksi valtuutusmenetelmää:

  • Entra SPN Token (Service Principal): Sovellus todentaa itsensä käyttämällä tunnistetietoja, kuten asiakassalaisuutta tai varmennetta. Tämä menetelmä soveltuu automatisoituihin prosesseihin ja taustapalveluihin, joissa käyttäjän vuorovaikutusta ei tarvita.

  • Entra-sovellustoken (delegoitu): Sovellus toimii kirjautuneen käyttäjän puolesta. Tämä menetelmä soveltuu silloin, kun haluat sovelluksen käyttävän resursseja todennuksen saaneen käyttäjän oikeuksilla.

Valitse valtuutusmenetelmä, joka parhaiten sopii tilanteeseesi, ja seuraa alla olevaa vastaavaa osiota.

Kuinka valtuuttaa Livy API -pyynnöt Microsoft Entra SPN Tokenilla

Työskennelläksesi Fabric API:n, mukaan lukien Livy API:n, kanssa sinun täytyy ensin luoda Microsoft Entra -sovellus, luoda salaisuus ja käyttää sitä koodissasi. Sovelluksesi täytyy olla rekisteröity ja konfiguroitu asianmukaisesti, jotta se voi suorittaa API-kutsuja Fabric:ta vastaan. Lisätietoja löytyy osoitteesta Lisää ja hallinnoi sovellustunnistetietoja Microsoft Entra ID

  1. Kun olet luonut sovelluksen rekisteröinnin, luo asiakassalaisuus.

    Screenshot, jossa näkyy Microsoft Entra sovelluksen rekisteröinti ja asiakassalaisuuden lisääminen.

  2. Kun luot asiakassalaisuuden, muista kopioida arvo. Tätä tarvitaan myöhemmin koodin sisällä, eikä salaista koodia voi enää nähdä. Tarvitset myös sovelluksen (asiakas) ID:n ja Directory (tenant ID) salaisuuden lisäksi koodissasi.

  3. Seuraavaksi lisää palvelupää työtilaasi.

    Näyttökuva, jossa näkyy Lakehouse-asetusten hallinta.

  4. Etsi Microsoft Entra -sovellusta käyttäen sovelluksen (asiakas) ID:tä tai nimeä, lisää se työtilaan ja varmista, että palvelupäämiehellä on Contributor-oikeudet.

    Näyttökuva, jossa näkyy uuden SPN-palvelun päänimen lisääminen työtilaan.

Livy-ohjelmointirajapintapyyntöjen valtuuttaminen Entra-sovellustunnuksen avulla

Työskennelläksesi Fabric API:n, mukaan lukien Livy API:n, kanssa sinun täytyy ensin luoda Microsoft Entra -sovellus ja hankkia token. Sovelluksesi täytyy olla rekisteröity ja konfiguroitu asianmukaisesti, jotta se voi suorittaa API-kutsuja Fabric:ta vastaan. Lisätietoja löytyy osoitteesta Rekisteröi hakemus Microsoftin käyttäjätietoympäristö:lle.

Seuraavat Microsoft Entra scope -oikeudet vaaditaan Livy API -töiden suorittamiseen:

Screenshot, jossa Livy API -oikeudet näkyvät Microsoft Entra -hallintakeskus.

Vaaditut tähtäimet

Käyttöalue Description
Lakehouse.Execute.All Toteuta toimintaa Fabric-järventaloissa.
Lakehouse.Read.All Lue lakehouse-metatiedot.
Code.AccessFabric.All Mahdollistaa pääsytokenien saamisen Microsoft Fabric -sovellukseen. Vaaditaan kaikissa Livy API -toiminnoissa.
Code.AccessStorage.All Mahdollistaa pääsytokenien saamisen OneLake- ja Azure-tallennustilaan. Vaaditaan datan lukemiseen ja kirjoittamiseen järvenmökissä.

Valinnainen koodi.* kaukoputket

Lisää nämä scopet vain, jos Spark-tehtäväsi tarvitsevat pääsyn vastaaviin Azure-palveluihin ajonaikaisesti.

Käyttöalue Description Milloin kannattaa käyttää
Code.AccessAzureKeyvault.All Mahdollistaa pääsytokenien saamisen Azure Key Vault:iin. Spark-koodisi hakee salaisuuksia, avaimia tai sertifikaatteja Azure Key Vault -ohjelmasta.
Code.AccessAzureDataLake.All Mahdollistaa pääsytokenien saamisen Azure Data Lake Storage Gen1:een. Spark-koodisi lukee tai kirjoittaa Azure Data Lake Storage Gen1 -tileille.
Code.AccessAzureDataExplorer.All Mahdollistaa pääsytokenien saamisen Azure Data Explorer (Kusto) -sovellukseen. Spark-koodisi kyselee tai vastaanottaa dataa Azure Data Explorer -klustereihin tai sieltä pois.
Code.AccessSQL.All Mahdollistaa pääsytokenien saamisen Azure SQL:ään. Spark-koodisi täytyy yhdistää Azure SQL -tietokantoihin.

Kun rekisteröit hakemuksesi, tarvitset sekä sovelluksen (asiakas) ID:n että Directory (vuokralaisen) ID:n.

Screenshot, jossa Livy API -sovelluksen yleiskatsaus näkyy Microsoft Entra -hallintakeskus.

Livy-ohjelmointirajapintaa kutsuvan todennetun käyttäjän on oltava työtilan jäsen, jossa sekä ohjelmointirajapinnan että tietolähteen kohteet sijaitsevat Osallistuja-roolissa. Lisätietoja on artikkelissa Työtilojen käyttöoikeuksien antaminen käyttäjille.

Understanding Code.* Scopes Livy API:lle

Kun Spark-työsi suoritetaan Livy API:n kautta, scopet Code.* ohjaavat, mitä ulkoisia palveluita Spark Runtime voi käyttää todennuksen saaneen käyttäjän puolesta. Kaksi vaaditaan; Loput ovat vapaaehtoisia riippuen työmäärästäsi.

Vaadittu koodi.* scopes

Käyttöalue Description
Code.AccessFabric.All Mahdollistaa pääsytokenien saamisen Microsoft Fabric -sovellukseen. Vaaditaan kaikissa Livy API -toiminnoissa.
Code.AccessStorage.All Mahdollistaa pääsytokenien saamisen OneLake- ja Azure-tallennustilaan. Vaaditaan datan lukemiseen ja kirjoittamiseen järvenmökissä.

Valinnainen koodi.* kaukoputket

Lisää nämä scopet vain, jos Spark-tehtäväsi tarvitsevat pääsyn vastaaviin Azure-palveluihin ajonaikaisesti.

Käyttöalue Description Milloin kannattaa käyttää
Code.AccessAzureKeyvault.All Mahdollistaa pääsytokenien saamisen Azure Key Vault:iin. Spark-koodisi hakee salaisuuksia, avaimia tai sertifikaatteja Azure Key Vault -ohjelmasta.
Code.AccessAzureDataLake.All Mahdollistaa pääsytokenien saamisen Azure Data Lake Storage Gen1:een. Spark-koodisi lukee tai kirjoittaa Azure Data Lake Storage Gen1 -tileille.
Code.AccessAzureDataExplorer.All Mahdollistaa pääsytokenien saamisen Azure Data Explorer (Kusto) -sovellukseen. Spark-koodisi kyselee tai vastaanottaa dataa Azure Data Explorer -klustereihin tai sieltä pois.
Code.AccessSQL.All Mahdollistaa pääsytokenien saamisen Azure SQL:ään. Spark-koodisi täytyy yhdistää Azure SQL -tietokantoihin.

Muistiinpano

Myös Lakehouse.Execute.All ja Lakehouse.Read.All kaukoputket ovat pakollisia, mutta ne eivät Code.* kuulu perheeseen. Ne myöntävät luvan suorittaa operaatioita ja lukea metatietoja Fabric-järvitaloista.

Kuinka löytää Fabric Livy API -päätepiste

Lakehouse-artefakti vaaditaan Livy-päätepisteen käyttämiseksi. Kun Lakehouse on luotu, Livy-ohjelmointirajapinnan päätepiste voi sijaita asetuspaneelin sisällä.

Näyttökuva, jossa näkyy Livy-ohjelmointirajapinnan päätepisteet Lakehouse-asetuksissa.

Livy-ohjelmointirajapinnan päätepiste noudattaa seuraavaa kaavaa:

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

URL-osoitteeseen liitetään joko <istuntoja> tai <eriä> sen mukaan, mitä valitset.

Livy API Swagger -tiedostojen lataaminen

Livy-ohjelmointirajapinnan täydet swagger-tiedostot ovat saatavilla täällä.

Korkeat samanaikaiset sessiot

Korkean samanaikaisuuden (HC) tuki mahdollistaa samanaikaisen Spark-suorituksen antamalla asiakkaille mahdollisuuden hankkia useita itsenäisiä suorituskonteksteja, joita kutsutaan korkeaksi samanaikaiseksi istunnoiksi.

Jokainen HC-istunto edustaa loogista suorituskontekstia, joka kuvataan Spark REPL:ksi (Read-Eval-Print Loop). Eri HC-istuntojen aikana lähetetyt Spark-lauseet voivat suorittaa samanaikaisesti.

Tämä mahdollistaa:

  • Rinnakkainen suoritus HC-istuntojen välillä
  • Ennustettava resurssien käyttö
  • Eristys samanaikaisten pyyntöjen välillä
  • Pienempi ylikuormitus verrattuna uuden istunnon luomiseen per pyyntö

Yhden istunnon käyttäminen kaikille pyynnöille johtaa lauseiden suorittamiseen peräkkäin. Uuden istunnon luominen jokaiselle pyynnölle aiheuttaa tarpeetonta ylikuormitusta ja resurssien alikäyttöä.

Muistiinpano

HC-istuntojen hankinta ei ole idempotenttia. Useat hankintapyynnöt samalla tavalla palauttavat sessionTag eri HC-istunto-ID:t, vaikka ne tukisivat samaa taustalla olevaa Livy-istuntoa.

Vaiheittaisen opastuksen esimerkkikoodista löydät Aloita Livy API for Fabric High Concurrency Sessions. Käsitteellisen yleiskatsauksen löydät High conparallel support in Fabric Livy API.

Livy-ohjelmointirajapintatöiden lähettäminen

Nyt kun Livy-ohjelmointirajapinnan määritys on valmis, voit lähettää joko erän tai istuntotyöt.

Integraatio Fabric-ympäristöihin

Tämä Livy-ohjelmointirajapinnan istunto suoritetaan oletusarvoisesti työtilan oletusarvoista aloitussarjaa vasten. Vaihtoehtoisesti voit käyttää Fabric Environmentsia Luo, konfiguroi ja käytä ympäristöä Microsoft Fabric mukauttaaksesi Spark-poolia, jota Livy API -istunto käyttää näihin Spark-töihin.

Jos haluat käyttää Fabric Environmentia Livy Spark -istunnossa, päivitä json sisältämään tämän hyötykuorman.

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

Jos haluat käyttää Fabric-ympäristöä Livy Spark -eräajosessiossa, päivitä json-hyötykuorma kuten tässä on esitetty:

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
    }
}

Pyyntöhistorian seuranta

Valvontakeskuksen avulla voit tarkastella livy-ohjelmointirajapinnan aiempia lähetyksiä ja korjata lähetysvirheet.

Näyttökuva, joka näyttää aiemmat Livy-ohjelmointirajapinnan lähetykset valvontakeskuksessa.