Jaa


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

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

  1. Valitse Lakehouse-asetukset Fabric Lakehouse -kohteessasi.

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

  2. Siirry Livy-päätepisteosioon.

    näyttökuva, jossa näkyvät Lakehouse Livy -päätepiste ja Istuntotyön yhteysmerkkijono.

  3. Kopioi istuntotyön yhteysmerkkijono (kuvan ensimmäinen punainen ruutu) koodiin.

  4. Siirry Microsoft Entra -hallintakeskukseen ja kopioi sekä Sovelluksen (asiakkaan) että hakemiston (vuokraajan) tunnus koodiin.

    Näyttökuva, jossa näkyy Livy-ohjelmointirajapintasovelluksen yleiskatsaus Microsoft Entra -hallintakeskuksessa.

Livy-ohjelmointirajapinnan Spark-istunnon luominen

  1. .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}
    
  2. Suorita muistikirjasolu. Selaimeen pitäisi ilmestyä ponnahdusikkuna, jonka avulla voit valita kirjautumisen käyttäjätiedot.

    Näyttökuva, jossa näkyy Microsoft Entra -sovellukseen kirjautumisnäyttö.

  3. 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.

    Näyttökuva, jossa näkyvät Microsoft Entra -sovelluksen ohjelmointirajapinnan käyttöoikeudet.

  4. Sulje selainikkuna todentamisen suorittamisen jälkeen.

    Näyttökuvassa on valmis todentaminen.

  5. Sinun pitäisi nähdä Microsoft Entra -tunnus Visual Studio Codessa.

    Näyttökuva, jossa näkyy Microsoft Entra -tunnus, joka palautettiin solun suorittamisen ja sisäänkirjautumisen jälkeen.

  6. 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())
    
  7. Suorita muistikirjasolu. Yhden rivin pitäisi näkyä, kun Livy-istunto luodaan.

    Näyttökuva, jossa näkyvät ensimmäisen muistikirjan solun suorituksen tulokset.

  8. 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

  1. 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)
    
  2. Suorita muistikirjan solu. Työn lähettämisen ja tulosten palauttamisen yhteydessä pitäisi näkyä useita lisääviä viivoja.

    Näyttökuva, jossa näkyvät ensimmäisen muistikirjan solun tulokset, joissa Spark.sql suoritus.

Toisen spark.sql-lausekkeen lähettäminen Livy API Spark -istunnon avulla

  1. 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)
    
  2. Suorita muistikirjan solu. Työn lähettämisen ja tulosten palauttamisen yhteydessä pitäisi näkyä useita lisääviä viivoja.

    Näyttökuva, jossa näkyvät toisen muistikirjan solun suorituksen tulokset.

Sulje Livy-istunto kolmannella lausekkeella

  1. 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.

  1. Kun istunto on kesken tai valmis, voit tarkastella istunnon tilaa siirtymällä kohtaan Valvonta.

    Näyttökuva, jossa näkyvät aiemmat Livy-ohjelmointirajapintalähetykset valvontakeskuksessa.

  2. Valitse ja avaa viimeisimmän toiminnon nimi.

    Näyttökuva, jossa näkyy valvontakeskuksen viimeisin Livy-ohjelmointirajapinnan toiminta.

  3. 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.

    Näyttökuva, jossa näkyvät valvontakeskuksen uusimmat Livy-ohjelmointirajapinnan toiminnan tiedot.

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.