Compartilhar via


Usar a API livy para enviar e executar trabalhos de sessão do Spark com credenciais de usuário

Aplica-se a:✅ Engenharia e Ciência de Dados no Microsoft Fabric

Comece a usar a API Livy para Engenharia de Dados do Fabric criando um Lakehouse; autentique-se com um token do Microsoft Entra; descubra o endpoint da API Livy; envie trabalhos em lote ou de sessão a partir de um cliente remoto para os recursos de computação do Fabric Spark; e monitore os resultados.

Pré-requisitos

Escolhendo um cliente de API REST

Você pode usar várias linguagens de programação ou clientes GUI para interagir com ponto de extremidades de API REST. Neste artigo, usamos do Visual Studio Code. O Visual Studio Code precisa ser configurado com Jupyter Notebooks, PySpark, e a Microsoft Authentication Library (MSAL) para Python

Como autorizar as solicitações da API do Livy com um Token SPN do Entra

Para trabalhar com APIs do Fabric, incluindo a API Livy, primeiro você precisa criar um aplicativo do Microsoft Entra, gerar um segredo e usá-lo em seu código. Seu aplicativo precisa ser registrado e configurado adequadamente para executar chamadas de API no Fabric. Para obter mais informações, consulte Adicionar e gerenciar credenciais de aplicativo na ID do Microsoft Entra

Depois de criar o registro do aplicativo, crie um segredo do cliente.

Captura de tela mostrando o registro do aplicativo Entra e a adição de um segredo do cliente.

  1. Ao criar o segredo do cliente, copie o valor. Você precisa disso mais tarde no código e o segredo não pode ser visto novamente. Você também precisará da ID do aplicativo (cliente) e do diretório (ID do locatário), além do segredo em seu código.

  2. Em seguida, precisamos adicionar o segredo do cliente ao nosso workspace.

    Captura de tela mostrando As opções de gerenciamento de acesso das configurações do Lakehouse.

  3. Pesquise o segredo do cliente entra e adicione esse segredo ao workspace e verifique se o segredo recém-adicionado tem permissões de administrador.

    Captura de tela mostrando a adição da nova entidade de serviço do SPN ao workspace.

Como autorizar as solicitações da API livy com um token de aplicativo Entra

Para trabalhar com APIs do Fabric, incluindo a API do Livy, você primeiro precisa criar um aplicativo Microsoft Entra e obter um token. Seu aplicativo precisa ser registrado e configurado adequadamente para executar chamadas de API no Fabric. Para obter mais informações, confira Registrar um aplicativo na plataforma de identidade da Microsoft.

São necessárias muitas permissões de escopo do Microsoft Entra para executar trabalhos do Livy. Este exemplo usa código Spark simples + acesso de armazenamento + 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

    Captura de tela mostrando as permissões da API do Livy no centro de administração do Microsoft Entra.

Observação

Durante a visualização pública, esses escopos podem ser alterados à medida que adicionamos mais alguns escopos granulares. Quando essas alterações de escopo acontecem, seu aplicativo Livy pode ser interrompido. Verifique esta lista, pois ela será atualizada com os escopos adicionais.

Alguns clientes querem permissões mais granulares do que a lista anterior. Você poderia remover Item.ReadWrite.All e substituir por essas permissões de escopo mais granulares:

  • 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

Ao registrar seu aplicativo, você precisará da ID do Aplicativo (cliente) e da ID do Diretório (inquilino).

Captura de tela mostrando a visão geral do aplicativo Livy API no centro de administração do Microsoft Entra.

A pessoa autenticada chamando a API do Livy precisa ser um membro do workspace onde tanto a API quanto os itens da fonte de dados estão localizados com um papel de Contribuidor. Para obter mais informações, consulte Conceder aos usuários acesso a espaços de trabalho.

Como descobrir o endpoint da API Livy do Fabric

Um artefato Lakehouse é necessário para acessar o endpoint Livy. Assim que o Lakehouse é criado, o endpoint da API Livy pode ser localizado no painel de configurações.

Captura de tela mostrando os endpoints da API do Livy nas configurações do Lakehouse.

O ponto de extremidade da API do Livy seguiria esse padrão:

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

A URL é anexada com <sessões> ou <lotes>, dependendo do que você escolher.

Baixar os arquivos Swagger da API Livy

Os arquivos completos do Swagger para a API livy estão disponíveis aqui.

Enviar trabalhos para a API do Livy

Agora que a instalação da API livy está concluída, você pode optar por enviar trabalhos em lote ou de sessão.

Integração com ambientes do Fabric

Por padrão, essa sessão da API livy é executada no pool inicial padrão do workspace. Como alternativa, você pode usar Ambientes do Fabric criar, configurar e usar um ambiente no Microsoft Fabric para personalizar o pool do Spark que a sessão da API Livy usa para esses trabalhos do Spark.

Para usar um Ambiente do Fabric em uma sessão do Livy Spark, basta atualizar o json para incluir essa carga útil.

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

Para usar um Ambiente do Fabric em uma sessão em lotes do Livy Spark, basta atualizar o conteúdo json, conforme mostrado abaixo.

payload_data = {
"name":"livybatchdemo_with"+ newlakehouseName,
"file":"abfss://YourABFSPathToYourPayload.py", 
"conf": {
    "spark.targetLakehouse": "Fabric_LakehouseID",
    "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID"\"}"  # remove this line to use starter pools instead of an environment, replace "EnvironmentID" with your environment ID
    }
}

Como monitorar o histórico de solicitações

Você pode usar o Hub de Monitoramento para ver seus envios anteriores da API do Livy e depurar quaisquer erros de envios.

Captura de tela mostrando envios anteriores da API livy no Hub de Monitoramento.