Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo detalha atualizações e aprimoramentos da funcionalidade na versão 2.2 da API de Trabalhos. Ele inclui informações para ajudá-lo a atualizar seus clientes de API existentes para trabalhar com essa nova versão. Essas atualizações incluem o enfileiramento padrão de tarefas e melhor suporte para paginação quando as respostas incluem campos com mais de 100 elementos. Como a versão 2.2 aprimora o suporte existente para paginar grandes conjuntos de resultados, o Databricks recomenda usá-lo para seus scripts e clientes de API, especialmente quando as respostas podem incluir muitas tarefas.
Para saber mais sobre as alterações entre as versões 2.0 e 2.1 da API, consulte Atualização da API de Trabalhos 2.0 para 2.1.
Além das alterações incluídas na versão 2.1 da API de Trabalhos do Lakeflow, a versão 2.2 tem os seguintes aprimoramentos:
As tarefas são enfileiradas por configuração padrão
O enfileiramento de tarefas é um recurso opcional que impede que as tarefas sejam puladas quando os recursos não estiverem disponíveis para a execução. Há suporte para filas de trabalho nas versões 2.0, 2.1 e 2.2 da API de Trabalhos, com as seguintes diferenças no tratamento padrão do enfileiramento:
- Para trabalhos criados com a API de Trabalhos 2.2, o enfileiramento é habilitado por padrão. Você pode desativar o enfileiramento definindo o campo
queuecomofalsenos conteúdos das solicitações ao criar ou atualizar uma tarefa. - Para trabalhos criados com as versões 2.0 e 2.1 da API de Trabalhos, o enfileiramento não está habilitado por padrão. Com essas versões, você deve habilitar o enfileiramento definindo o campo
queueparatrueem corpos de solicitação ao criar ou atualizar um trabalho.
Você pode habilitar ou desabilitar o enfileiramento ao criar um trabalho, atualizar parcialmente um trabalho ou atualizar todas as configurações de trabalho.
Consulte o enfileiramento de trabalho.
Suporte para paginação de listas de tarefas longas e listas de execução de tarefas
Para dar suporte a trabalhos com um grande número de tarefas ou execuções de tarefas, a API de Trabalhos 2.2 altera a forma como grandes conjuntos de resultados são retornados para as seguintes solicitações:
-
Listar trabalhos: Consulte Alterações nos pedidos
List jobseList job runs. -
Listar execuções de trabalho: Consulte Alterações nas solicitações de
List jobseList job runs. - Obtenha um único trabalho: consulte Obter um único trabalho.
- Obter uma única execução de tarefa: consulte Obter uma única execução.
A API de Trabalhos 2.2 altera a paginação para essas solicitações da seguinte maneira:
- Os campos que representam listas de elementos como tarefas, parâmetros, job_clusters ou ambientes são limitados a 100 elementos por resposta. Se mais de 100 valores estiverem disponíveis, o corpo da resposta incluirá um
next_page_tokencampo que contém um token para recuperar a próxima página de resultados. - A paginação é adicionada para as respostas às solicitações de
Get a single jobeGet a single job run. A paginação das respostas às solicitaçõesList jobeList job runsfoi adicionada com a API de Trabalhos 2.1.
Veja a seguir um exemplo de corpo de resposta de uma Get a single job solicitação para uma tarefa com mais de 100 subtarefas. Para demonstrar a funcionalidade de paginação baseada em token, este exemplo omite a maioria dos campos incluídos no corpo da resposta:
{
"job_id": 11223344,
"settings": {
"tasks": [
{
"task_key": "task-1"
},
{
"task_key": "task-2"
},
{
"task_key": "task-..."
},
{
"task_key": "task-100"
}
]
},
"next_page_token": "Z29...E="
}
Para recuperar o próximo conjunto de resultados, defina o page_token parâmetro de consulta na próxima solicitação para o valor retornado no next_page_token campo. Por exemplo, /api/2.2/jobs/get?job_id=11223344&page_token=Z29...E=.
Se não houver mais resultados disponíveis, o next_page_token campo não será incluído na resposta.
As seções a seguir fornecem mais detalhes sobre as atualizações para cada uma das solicitações list e get.
Alterações nas solicitações List jobs e List job runs
Para as solicitações de listar trabalhos e listar execuções de trabalho, o parâmetro has_more no nível raiz do objeto de resposta é removido. Em vez disso, use a existência do next_page_token para determinar se há mais resultados disponíveis. Caso contrário, a funcionalidade para paginar resultados permanece inalterada.
Para evitar grandes corpos de resposta, os arrays de nível superior tasks e job_clusters de cada trabalho são omitidos das respostas por padrão. Para incluir essas matrizes para cada trabalho incluído no corpo da resposta dessas solicitações, adicione o expand_tasks=true parâmetro à solicitação. Quando expand_tasks estiver habilitado, no máximo 100 elementos serão retornados nas matrizes tasks e job_clusters. Se uma dessas matrizes tiver mais de 100 elementos, um has_more campo (para não ser confundido com o campo de nível has_more raiz removido) dentro do job objeto será definido como true. No entanto, somente os primeiros 100 elementos estarão acessíveis. Você não pode recuperar tarefas ou clusters adicionais após os primeiros 100 com a solicitação de trabalhos de lista . Para buscar mais elementos, use as requisições que retornam um único trabalho ou a execução de um único trabalho. As atualizações que dão suporte à paginação de campos de resposta grandes são discutidas nas seções a seguir.
Conseguir um único emprego
Na API de Trabalhos 2.2, a solicitação Obter um único trabalho para recuperar detalhes sobre um único trabalho agora dá suporte à paginação dos tasks campos e job_clusters quando o tamanho de qualquer campo excede 100 elementos. Use o next_page_token campo na raiz do objeto para determinar se há mais resultados disponíveis. Em seguida, o valor desse campo é usado como o valor do page_token parâmetro de consulta em solicitações subsequentes. Campos de matriz com menos de 100 elementos em uma página estarão vazios nas páginas subsequentes.
Obter uma única execução
Na API de Trabalhos 2.2, a solicitação Obter uma única execução para recuperar detalhes sobre uma única execução agora dá suporte à paginação dos tasks campos e job_clusters quando o tamanho de um dos campos excede 100 elementos. Use o next_page_token campo na raiz do objeto para determinar se há mais resultados disponíveis. Em seguida, o valor desse campo é usado como o valor do parâmetro de consulta page_token em solicitações subsequentes. Campos de matriz com menos de 100 elementos em uma página estarão vazios nas páginas subsequentes.
A Jobs API 2.2 também adiciona o parâmetro de consulta only_latest a esse endpoint para mostrar apenas as tentativas de execução mais recentes na matriz tasks. Quando o parâmetro only_latest é true, quaisquer execuções substituídas por uma repetição ou um reparo são omitidas da resposta.
Quando o run_id refere-se a uma ForEach tarefa, um campo chamado iterations está presente na resposta. O campo iterations é uma matriz que contém detalhes sobre todas as execuções das tarefas aninhadas da tarefa ForEach e possui as seguintes propriedades.
- O esquema de cada objeto na
iterationsmatriz é o mesmo dos objetos natasksmatriz. - Se o
only_latestparâmetro de consulta estiver definido comotrue, somente as tentativas de execução mais recentes serão incluídas naiterationsmatriz. - A paginação é aplicada à
iterationsmatriz em vez datasksmatriz. - A
tasksmatriz ainda está incluída na resposta e inclui a tarefa em execuçãoForEach.
Para saber mais sobre a ForEach tarefa, consulte a documentação da tarefa ForEach.
Por exemplo, consulte a seguinte resposta para uma ForEach tarefa com alguns campos omitidos:
{
"job_id": 53,
"run_id": 759600,
"number_in_job": 7,
"original_attempt_run_id": 759600,
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
},
"cluster_spec": {},
"start_time": 1595943854860,
"setup_duration": 0,
"execution_duration": 0,
"cleanup_duration": 0,
"trigger": "ONE_TIME",
"creator_user_name": "user@databricks.com",
"run_name": "process_all_numbers",
"run_type": "JOB_RUN",
"tasks": [
{
"run_id": 759600,
"task_key": "process_all_numbers",
"description": "Process all numbers",
"for_each_task": {
"inputs": "[ 1, 2, ..., 101 ]",
"concurrency": 10,
"task": {
"task_key": "process_number_iteration"
"notebook_task": {
"notebook_path": "/Users/user@databricks.com/process_single_number",
"base_parameters": {
"number": "{{input}}"
}
}
},
"stats": {
"task_run_stats": {
"total_iterations": 101,
"scheduled_iterations": 101,
"active_iterations": 0,
"failed_iterations": 0,
"succeeded_iterations": 101,
"completed_iterations": 101
}
}
}
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
}
}
],
"iterations": [
{
"run_id": 759601,
"task_key": "process_number_iteration",
"notebook_task": {
"notebook_path": "/Users/user@databricks.com/process_single_number",
"base_parameters": {
"number": "{{input}}"
}
},
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
}
},
{
"run_id": 759602,
"task_key": "process_number_iteration",
"notebook_task": {
"notebook_path": "/Users/user@databricks.com/process_single_number",
"base_parameters": {
"number": "{{input}}"
}
},
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
}
}
],
"format": "MULTI_TASK",
"next_page_token": "eyJ..x9"
}