Controlar o fluxo de tarefas em um trabalho do Databricks
Alguns trabalhos são simplesmente uma lista de tarefas que precisam ser concluídas. Você pode controlar a ordem de execução das tarefas especificando dependências entre elas. Você pode configurar tarefas a serem executadas em sequência ou paralela.
No entanto, você também pode criar fluxos de ramificação que incluem tarefas condicionais, correção de erro ou limpeza. O Azure Databricks fornece funcionalidade para controlar o fluxo de tarefas em um trabalho. Os tópicos a seguir descrevem maneiras de controlar o fluxo de suas tarefas.
Novas tentativas
As novas tentativas especificam quantas vezes uma tarefa específica deve ser executada novamente se a tarefa falhar com uma mensagem de erro. Os erros geralmente são transitórios e resolvidos por meio da reinicialização. Alguns recursos no Azure Databricks, como a evolução do esquema com o Streaming Estruturado, pressupõem que você execute tarefas com reexecuções para restaurar o ambiente e permitir que um fluxo de trabalho prossiga.
Se você especificar novas tentativas para uma tarefa, a tarefa será reiniciada até o número especificado de vezes se encontrar um erro. Nem todas as configurações de trabalho dão suporte a novas tentativas de tarefa. Confira Configurar uma política de repetição.
Ao executar no modo de gatilho contínuo, o Databricks repetirá automaticamente com uma retirada exponencial. Veja Como as falhas são tratadas para trabalhos contínuos?.
Executar tarefas condicionais if
Você pode usar o tipo de tarefa Run if para especificar condicionais para tarefas posteriores com base no resultado de outras tarefas. Você pode adicionar tarefas ao trabalho e especificar tarefas dependentes upstream. Com base no status dessas tarefas, você pode configurar uma ou mais tarefas downstream a serem executadas. Os trabalhos são compatíveis com as seguintes dependências:
- Todos bem-sucedidos
- Pelo menos um foi bem-sucedido
- Nenhum falhou
- Tudo feito
- Pelo menos um falhou
- Tudo falhou
Confira Configuração de dependências de tarefa
Tarefas condicionais if/else
Você pode usar o tipo de tarefa If/else para especificar condicionais com base em algum valor. Confira Adicionar lógica de ramificação a um trabalho com a tarefa If/else.
Os trabalhos dão suporte a taskValues
que você define como na sua lógica e permitem que você retorne os resultados de algum cálculo ou estado de uma tarefa para o ambiente de trabalhos. Você pode definir condições If/else em relação a taskValues
, a parâmetros de trabalho ou a valores dinâmicos.
O Azure Databricks dá suporte aos seguintes operandos para condicionais:
==
!=
>
>=
<
<=
Veja também:
- Usar valores de tarefa para passar informações entre tarefas
- O que é uma referência de valor dinâmico?
- parametrizar tarefas
Tarefas for each
Use a tarefa For each
para executar outra tarefa em um loop, passando um conjunto diferente de parâmetros para cada iteração da tarefa.
Para adicionar uma tarefa For each
a um trabalho, você deve definir uma tarefa For each
e uma tarefa aninhada. A tarefa aninhada é a tarefa que deve ser executada para cada iteração da tarefa For each
e é um dos tipos de tarefa padrão do Databricks. Há suporte para vários métodos para passar parâmetros para a tarefa aninhada.
Confira Executar uma tarefa parametrizada do Azure Databricks em um loop.