programar e orquestrar o fluxo de trabalho

Databricks Workflows fornece um conjunto de ferramentas que permitem programar e orquestrar tarefas de processamento de dados em Databricks. O senhor usa o Databricks Workflows para configurar os Databricks Jobs.

Este artigo apresenta conceitos relacionados ao gerenciamento de cargas de trabalho de produção usando Databricks Jobs.

Observação

Delta Live Tables fornecem uma sintaxe declarativa para a criação de pipeline de processamento de dados. Veja o que é Delta Live Tables?

O que é o Databricks Job?

Um Databricks Job permite que o senhor configure a tarefa para execução em um ambiente compute especificado em um programar especificado. Juntamente com os pipelines do Delta Live Tables, os trabalhos são a principal ferramenta usada no Databricks para implementar o processamento de dados e a lógica de ML na produção.

Os trabalhos podem variar em complexidade, desde uma única tarefa executando um notebook Databricks até milhares de tarefas executadas com lógica condicional e dependências.

Como posso configurar e executar o Job?

Você pode criar e executar um job usando a interface do usuário do Jobs, a CLI do Databricks ou invocando a API Jobs. Você pode reparar e executar novamente um job com falha ou cancelado usando a interface do usuário ou a API. Você pode monitorar os resultados da execução do job usando a interface do usuário, a CLI, a API e as notificações (por exemplo, e-mail, destino do webhook ou notificações do Slack).

Para saber mais sobre como usar a CLI da Databricks, consulte O que é a CLI da Databricks? Para saber mais sobre como usar a API de Jobs, consulte a API de Jobs.

Qual é a configuração mínima necessária para um trabalho?

Todos os trabalhos em Databricks exigem o seguinte:

  • Código-fonte que contém a lógica a ser executada.

  • A compute recurso para executar a lógica. O recurso compute pode ser serverless compute, o clássico Job compute, ou o all-purpose compute. Consulte Usar a computação do Databricks com seus trabalhos.

  • Um programador especificado para quando o trabalho deve ser executado ou um acionador manual.

  • Um nome exclusivo.

Observação

Se o senhor desenvolver seu código no Databricks Notebook, poderá usar o botão programar para configurar esse Notebook como um trabalho. Consulte Criar e gerenciar o trabalho agendado do Notebook.

O que é uma tarefa?

Uma tarefa representa uma unidade de lógica em um trabalho. A tarefa pode variar em complexidade e incluir o seguinte:

  • Um caderno de anotações

  • UM JAR

  • Uma consulta SQL

  • Um pipeline de DLT

  • Outro trabalho

  • Tarefa de controle de fluxo

O senhor pode controlar a ordem de execução da tarefa especificando as dependências entre elas. O senhor pode configurar a tarefa para execução em sequência ou em paralelo.

Os trabalhos interagem com as informações de estado e os metadados da tarefa, mas o escopo da tarefa é isolado. É possível usar valores de tarefa para compartilhar o contexto entre tarefas programadas. Veja Share information between tarefa in a Databricks Job.

Quais opções de fluxo de controle estão disponíveis para o Job?

Ao configurar o trabalho e a tarefa dentro do trabalho, o senhor pode personalizar as configurações que controlam a execução de todo o trabalho e de cada tarefa.

Tipos de gatilho

O senhor deve especificar um tipo de acionador ao configurar um trabalho. O senhor pode escolher entre os seguintes tipos de acionadores:

O senhor também pode optar por acionar manualmente o Job, mas isso é reservado principalmente para casos de uso específicos, como:

  • O senhor usa uma ferramenta de orquestração externa para acionar o Job usando REST API calls.

  • O senhor tem um trabalho que raramente é executado e que requer uma pessoa no circuito para validação ou resolução de problemas de qualidade de dados.

  • O senhor está executando uma carga de trabalho que só precisa ser executada uma ou poucas vezes, como uma migração.

Consulte Trigger Job quando novos arquivos chegarem.

Novas tentativas

Retries especifica quantas vezes um determinado trabalho ou tarefa deve ser reexecutado se o trabalho falhar com uma mensagem de erro. Os erros geralmente são transitórios e resolvidos por meio da reinicialização, e alguns recursos do site Databricks, como a evolução do esquema com transmissão estruturada, pressupõem que o senhor execute o Job com novas tentativas para redefinir o ambiente e permitir que um fluxo de trabalho prossiga.

Uma opção para configurar novas tentativas aparece na interface do usuário para contextos compatíveis. Isso inclui o seguinte:

  • O senhor pode especificar novas tentativas para um trabalho inteiro, o que significa que o trabalho inteiro será reiniciado se alguma tarefa falhar.

  • O senhor pode especificar novas tentativas para uma tarefa; nesse caso, a tarefa será reiniciada até o número especificado de vezes se encontrar um erro.

Ao executar no modo de disparo contínuo, o Databricks tenta novamente de forma automática com backoff exponencial. Consulte Como as falhas são tratadas no trabalho contínuo?

execução se tarefa condicional

O senhor pode usar o tipo de tarefa executar se para especificar condicionais para tarefas posteriores com base no resultado de outras tarefas. O senhor adiciona tarefa ao seu Job e especifica tarefa dependente de upstream. Com base no status dessas tarefas, o senhor pode configurar uma ou mais tarefas downstream para execução. Os trabalhos suportam as seguintes dependências:

  • Tudo foi bem-sucedido

  • Pelo menos um bem-sucedido

  • Não houve falha

  • Tudo pronto

  • Pelo menos uma falha

  • Tudo falhou

Ver execução de tarefa condicionalmente em um Databricks Job

Tarefa condicional if/else

O senhor pode usar o tipo de tarefa If/else para especificar condicionais com base em algum valor. Consulte Adicionar lógica de ramificação ao seu trabalho com a tarefa de condição If/else

Os trabalhos suportam taskValues que o senhor define em sua lógica e permitem retornar os resultados de algum cálculo ou estado de uma tarefa para o ambiente do trabalho. O senhor pode definir condições If/else em relação a taskValues, parâmetros de trabalho ou valores dinâmicos.

O Databricks suporta os seguintes operandos para condicionais:

  • ==

  • !=

  • >

  • >=

  • <

  • <=

Veja também:

Para cada tarefa

Use a tarefa For each para executar outra tarefa em um loop, passando um conjunto diferente de parâmetros a cada iteração da tarefa.

Para adicionar a tarefa For each a um trabalho, é necessário definir duas tarefas: A tarefa For each e uma tarefa aninhada. A tarefa aninhada é a tarefa a ser executada para cada iteração da tarefa For each e é um dos tipos de tarefa padrão do Databricks Jobs. Há suporte para vários métodos para passar parâmetros para a tarefa aninhada.

Ver execução a parameterized Databricks Job tarefa in a loop.

duração limite

O senhor pode especificar um limite de duração para enviar um aviso ou interromper uma tarefa ou trabalho se a duração especificada for excedida. Exemplos de quando o senhor pode querer configurar essa opção incluem o seguinte:

  • O senhor tem tarefas que tendem a ficar presas em um estado suspenso.

  • O senhor precisa avisar um engenheiro se o SLA de um fluxo de trabalho for excedido.

  • O senhor deseja reprovar um trabalho configurado com um grande cluster para evitar custos inesperados.

Concorrência

A maioria dos trabalhos é configurada com a simultaneidade default de 1 trabalho concorrente. Isso significa que, se a execução de um trabalho anterior não tiver sido concluída até o momento em que um novo trabalho deve ser acionado, a execução do próximo trabalho será ignorada.

Há alguns casos de uso para aumentar a simultaneidade, mas a maioria das cargas de trabalho não exige a alteração dessa configuração.

Como posso monitorar o trabalho?

O senhor pode receber notificações quando um trabalho ou tarefa começar, for concluído ou falhar. O senhor pode enviar notificações para um ou mais endereços email ou destinos do sistema. Consulte Adicionar email e notificações de sistema para eventos de trabalho.

As tabelas do sistema incluem um esquema lakeflow em que o senhor pode view registros relacionados à atividade do trabalho no seu account. Consulte a referência da tabela do sistema Jobs.

O senhor também pode join as tabelas do sistema Job com as tabelas de faturamento para monitorar o custo do Job em seu account. Consulte Monitorar custos do trabalho com tabelas do sistema.

Limitações

Existem as seguintes limitações:

  • Um workspace é limitado a 1000 execuções de tarefas simultâneas. Será retornada a resposta 429 Too Many Requests se você solicitar uma execução que não puder ser iniciada imediatamente.

  • O número de jobs que um workspace pode criar em uma hora é limitado a 10000 (inclui "envio de execuções"). Esse limite também afeta os jobs criados pela API REST e pelos fluxos de trabalho do notebook.

  • O site workspace pode conter até 12.000 trabalhos salvos.

  • Um trabalho pode conter até 100 tarefas.

Posso gerenciar fluxo de trabalho de forma programática?

Databricks fornece ferramentas e o site APIs que permitem programar e orquestrar seu fluxo de trabalho de forma programática, incluindo o seguinte:

Para obter mais informações sobre ferramentas de desenvolvedor, consulte Ferramentas e orientações para desenvolvedores.

Orquestração de fluxo de trabalho com Apache AirFlow

O senhor pode usar o Apache Airflow para gerenciar e programar seu fluxo de trabalho de dados. Com Airflow, o senhor define seu fluxo de trabalho em um arquivo Python e Airflow gerencia programar e executar o fluxo de trabalho. Consulte Orchestrate Databricks Job with Apache Airflow .