Livy-ohjelmointirajapinnan avulla voit lähettää ja suorittaa istuntotöitä
Muistiinpano
Fabric Data Engineeringin Livy-ohjelmointirajapinta on esikatselussa.
Koskee seuraavia:✅ Microsoft Fabricin tietotekniikka ja datatiede
Lähetä Spark-erätöitä Fabric Data Engineeringin Livy-ohjelmointirajapinnan avulla.
Edellytykset
Fabric Premium - tai kokeiluversion kapasiteetti Lakehousella.
Ota vuokraajan järjestelmänvalvojan asetus käyttöön Livy-ohjelmointirajapinnalle (esikatselu).
Etäasiakas, kuten Visual Studio Code , jossa on Jupyter Notebooks, PySpark ja Microsoft Authentication Library (MSAL) for Python.
Fabric Rest -ohjelmointirajapinnan käyttämiseen vaaditaan Microsoft Entra -sovellustunnus. Rekisteröi sovellus Microsoftin käyttäjätietoympäristössä.
Jotkin tiedot lakehousessa, tässä esimerkissä käytetään NEWC Taxi & Limousine Commission green_tripdata_2022_08 lakehouseen ladattua parquet-tiedostoa.
Livy-ohjelmointirajapinta määrittää toimintojen yhtenäisen päätepisteen. Korvaa paikkamerkit {Entra_TenantID}, {Entra_ClientID}, {Fabric_WorkspaceID} ja {Fabric_LakehouseID} sopivilla arvoilla, kun noudatat tämän artikkelin esimerkkejä.
Visual Studio Coden määrittäminen Livy-ohjelmointirajapintaistunnollesi
Valitse Lakehouse-asetukset Fabric Lakehouse -kohteessasi.
Siirry Livy-päätepisteosioon.
Kopioi istuntotyön yhteysmerkkijono (kuvan ensimmäinen punainen ruutu) koodiin.
Siirry Microsoft Entra -hallintakeskukseen ja kopioi sekä Sovelluksen (asiakkaan) että hakemiston (vuokraajan) tunnus koodiin.
Livy-ohjelmointirajapinnan Spark-istunnon luominen
.ipynb
Luo muistikirja Visual Studio Codessa ja lisää seuraava koodi.from msal import PublicClientApplication import requests import time tenant_id = "Entra_TenantID" client_id = "Entra_ClientID" workspace_id = "Fabric_WorkspaceID" lakehouse_id = "Fabric_LakehouseID" app = PublicClientApplication( client_id, authority="https://login.microsoftonline.com/43a26159-4e8e-442a-9f9c-cb7a13481d48" ) result = None # If no cached tokens or user interaction needed, acquire tokens interactively if not result: result = app.acquire_token_interactive(scopes=["https://api.fabric.microsoft.com/Lakehouse.Execute.All", "https://api.fabric.microsoft.com/Lakehouse.Read.All", "https://api.fabric.microsoft.com/Item.ReadWrite.All", "https://api.fabric.microsoft.com/Workspace.ReadWrite.All", "https://api.fabric.microsoft.com/Code.AccessStorage.All", "https://api.fabric.microsoft.com/Code.AccessAzureKeyvault.All", "https://api.fabric.microsoft.com/Code.AccessAzureDataExplorer.All", "https://api.fabric.microsoft.com/Code.AccessAzureDataLake.All", "https://api.fabric.microsoft.com/Code.AccessFabric.All"]) # Print the access token (you can use it to call APIs) if "access_token" in result: print(f"Access token: {result['access_token']}") else: print("Authentication failed or no access token obtained.") if "access_token" in result: access_token = result['access_token'] api_base_url_mist='https://api.fabric.microsoft.com/v1' livy_base_url = api_base_url_mist + "/workspaces/"+workspace_id+"/lakehouses/"+lakehouse_id +"/livyApi/versions/2023-12-01/sessions" headers = {"Authorization": "Bearer " + access_token}
Suorita muistikirjasolu. Selaimeen pitäisi ilmestyä ponnahdusikkuna, jonka avulla voit valita kirjautumisen käyttäjätiedot.
Kun olet valinnut käyttäjätiedot, joilla kirjaudut sisään, sinua pyydetään myös hyväksymään Microsoft Entra -sovelluksen rekisteröinnin ohjelmointirajapinnan käyttöoikeudet.
Sulje selainikkuna todentamisen suorittamisen jälkeen.
Sinun pitäisi nähdä Microsoft Entra -tunnus Visual Studio Codessa.
Lisää toinen muistikirjasolu ja lisää tämä koodi.
create_livy_session = requests.post(livy_base_url, headers=headers, json={}) print('The request to create the Livy session is submitted:' + str(create_livy_session.json())) livy_session_id = create_livy_session.json()['id'] livy_session_url = livy_base_url + "/" + livy_session_id get_session_response = requests.get(livy_session_url, headers=headers) print(get_session_response.json())
Suorita muistikirjasolu. Yhden rivin pitäisi näkyä, kun Livy-istunto luodaan.
Voit varmistaa, että Livy-istunto luodaan käyttämällä [Näytä työsi valvontakeskuksessa](#View töitäsi valvontakeskuksessa).
spark.sql-lausekkeen lähettäminen Livy API Spark -istunnon avulla
Lisää toinen muistikirjasolu ja lisää tämä koodi.
# call get session API livy_session_id = create_livy_session.json()['id'] livy_session_url = livy_base_url + "/" + livy_session_id get_session_response = requests.get(livy_session_url, headers=headers) print(get_session_response.json()) while get_session_response.json()["state"] != "idle": time.sleep(5) get_session_response = requests.get(livy_session_url, headers=headers) execute_statement = livy_session_url + "/statements" payload_data = { "code": "spark.sql(\"SELECT * FROM green_tripdata_2022_08 where fare_amount = 60\").show()", "kind": "spark" } execute_statement_response = requests.post(execute_statement, headers=headers, json=payload_data) print('the statement code is submitted as: ' + str(execute_statement_response.json())) statement_id = str(execute_statement_response.json()['id']) get_statement = livy_session_url+ "/statements/" + statement_id get_statement_response = requests.get(get_statement, headers=headers) while get_statement_response.json()["state"] != "available": # Sleep for 5 seconds before making the next request time.sleep(5) print('the statement code is submitted and running : ' + str(execute_statement_response.json())) # Make the next request get_statement_response = requests.get(get_statement, headers=headers) rst = get_statement_response.json()['output']['data']['text/plain'] print(rst)
Suorita muistikirjan solu. Työn lähettämisen ja tulosten palauttamisen yhteydessä pitäisi näkyä useita lisääviä viivoja.
Toisen spark.sql-lausekkeen lähettäminen Livy API Spark -istunnon avulla
Lisää toinen muistikirjasolu ja lisää tämä koodi.
# call get session API livy_session_id = create_livy_session.json()['id'] livy_session_url = livy_base_url + "/" + livy_session_id get_session_response = requests.get(livy_session_url, headers=headers) print(get_session_response.json()) while get_session_response.json()["state"] != "idle": time.sleep(5) get_session_response = requests.get(livy_session_url, headers=headers) execute_statement = livy_session_url + "/statements" payload_data = { "code": "spark.sql(\"SELECT * FROM green_tripdata_2022_08 where tip_amount = 10\").show()", "kind": "spark" } execute_statement_response = requests.post(execute_statement, headers=headers, json=payload_data) print('the statement code is submitted as: ' + str(execute_statement_response.json())) statement_id = str(execute_statement_response.json()['id']) get_statement = livy_session_url+ "/statements/" + statement_id get_statement_response = requests.get(get_statement, headers=headers) while get_statement_response.json()["state"] != "available": # Sleep for 5 seconds before making the next request time.sleep(5) print('the statement code is submitted and running : ' + str(execute_statement_response.json())) # Make the next request get_statement_response = requests.get(get_statement, headers=headers) rst = get_statement_response.json()['output']['data']['text/plain'] print(rst)
Suorita muistikirjan solu. Työn lähettämisen ja tulosten palauttamisen yhteydessä pitäisi näkyä useita lisääviä viivoja.
Sulje Livy-istunto kolmannella lausekkeella
Lisää toinen muistikirjasolu ja lisää tämä koodi.
# call get session API with a delete session statement get_session_response = requests.get(livy_session_url, headers=headers) print('Livy statement URL ' + livy_session_url) response = requests.delete(livy_session_url, headers=headers) print (response)
Tarkastele töitäsi valvontakeskuksessa
Voit käyttää valvontakeskusta tarkastelemaan erilaisia Apache Spark -toimintoja valitsemalla Vasemmanpuoleisten siirtymislinkkien Valvonta.
Kun istunto on kesken tai valmis, voit tarkastella istunnon tilaa siirtymällä kohtaan Valvonta.
Valitse ja avaa viimeisimmän toiminnon nimi.
Tässä Livy-ohjelmointirajapinta-istunnon tapauksessa voit tarkastella aiempien istuntojen lähetyksiä, suoritustietoja, Spark-versioita ja määritystä. Huomaa pysäytetty tila oikeassa yläkulmassa.
Jotta voit tiivistää koko prosessin, tarvitset etäasiakkaan, kuten Visual Studio Coden, Microsoft Entra -sovellustunnuksen, Livy-ohjelmointirajapinnan päätepisteen URL-osoitteen, todennuksen Lakehousea vastaan ja lopuksi Istunnon Livy-ohjelmointirajapinnan.