Agendar e orquestrar fluxos de trabalho
Os fluxos de trabalho do Databricks fornecem ferramentas que permitem agendar e orquestrar tarefas de processamento de dados no Azure Databricks. Você usa fluxos de trabalho do Databricks para configurar trabalhos do Databricks.
Este artigo apresenta conceitos e opções relacionados ao gerenciamento de cargas de trabalho de produção usando trabalhos do Databricks.
O que são trabalhos do Databricks?
Um trabalho é a unidade primária para agendar e orquestrar cargas de trabalho de produção no Azure Databricks. Um trabalho consiste em uma ou mais tarefas. Juntos, tarefas e trabalhos permitem que você configure e implante o seguinte:
- Lógica personalizada, incluindo Spark, SQL, OSS Python, ML e código arbitrário.
- Calcule recursos com ambientes e bibliotecas personalizados.
- Agendamentos e gatilhos para executar cargas de trabalho.
- Lógica condicional para fluxo de controle entre tarefas.
Os trabalhos fornecem uma abordagem procedural para definir relações entre tarefas. Os pipelines do Delta Live Tables fornecem uma abordagem declarativa para definir relações entre conjuntos de dados e transformações. Você pode incluir pipelines do Delta Live Tables como uma tarefa em um trabalho. Confira Tarefa de pipelines do Delta Live Tables para trabalhos.
Os trabalhos podem variar em complexidade: de uma única tarefa executando um notebook do Databricks a milhares de tarefas em execução com lógica condicional e dependências.
Como configuro e executo trabalhos?
Você pode criar e executar um trabalho usando a interface do usuário dos trabalhos, a CLI do Databricks ou invocando a API de trabalhos. Usando a interface do usuário ou a API, é possível reparar e executar novamente um trabalho com falha ou cancelado. Você pode monitorar os resultados da execução do trabalho usando a interface do usuário, a CLI, a API e as notificações (por exemplo, email, destino do webhook ou notificações do Slack).
Se você preferir uma abordagem de IaC (infraestrutura como código) para configurar e orquestrar seus trabalhos, use DABs (Databricks Asset Bundles) do Databricks. Os pacotes podem conter definições YAML de trabalhos e tarefas, são gerenciados usando a CLI do Databricks e podem ser compartilhados e executados em diferentes workspaces de destino (como desenvolvimento, preparo e produção). Para saber mais sobre como usar DABs para configurar e orquestrar seus trabalhos, consulte Databricks Asset Bundles.
Para saber mais sobre como usar a CLI do Databricks, veja O que é a CLI do Databricks?. Para saber mais sobre como usar a API de Trabalhos, consulte a API de Trabalhos.
Qual é a configuração mínima necessária para um trabalho?
Todos os trabalhos no Azure Databricks exigem o seguinte:
- Código-fonte (como um notebook do Databricks) que contém a lógica a ser executada.
- Um recurso de computação para executar a lógica. O recurso de computação pode ser computação sem servidor, computação de trabalhos clássica ou computação para todas as finalidades. Confira Configurar computação para trabalhos.
- Um agendamento especificado para quando o trabalho deverá ser executado. Opcionalmente, você pode omitir a configuração de um agendamento e acionar o trabalho manualmente.
- Um nome exclusivo.
Observação
Se você desenvolver o código em notebooks do Databricks, use o botão Agendar para configurar esse notebook como um trabalho. Consulte Criar e gerenciar trabalhos agendados do notebook.
O que é uma tarefa?
Uma tarefa representa uma unidade de lógica a ser executada como uma etapa em um trabalho. As tarefas podem variar em complexidade e incluir o seguinte:
- A notebook
- UM JAR
- Consultas SQL
- Um pipeline de DLT
- Outro trabalho
- Tarefas de fluxo de controle
Você pode controlar a ordem de execução das tarefas especificando dependências entre elas. Você pode configurar as tarefas para execução em sequência ou em paralelo.
Os trabalhos interagem com informações de estado e metadados de tarefas, mas o escopo da tarefa é isolado. Você pode usar valores de tarefa para compartilhar o contexto entre tarefas agendadas. Confira Usar valores de tarefa para passar informações entre tarefas.
Quais opções de fluxo de controle estão disponíveis para os trabalhos?
Ao configurar trabalhos e tarefas em trabalhos, você pode personalizar as configurações que controlam como o todo o trabalho e cada tarefa são executados. Essas opções são:
- Gatilhos
- Repetições
- Tarefas condicionais Run if
- Tarefas condicionais If/else
- Tarefas For each
- Limites de duração
- Configuração de simultaneidade
Tipos de gatilho
Você deve especificar um tipo de gatilho ao configurar um trabalho. Você pode escolher entre os seguintes tipos de gatilho:
Você também pode optar por acionar manualmente o trabalho, mas isso é reservado principalmente para casos de uso específicos, como:
- Você usa uma ferramenta de orquestração externa para acionar trabalhos usando chamadas à API REST.
- Você tem um trabalho que é executado raramente e requer intervenção manual para validação ou resolução de problemas de qualidade de dados.
- Você está executando uma carga de trabalho que só precisa ser executada uma ou algumas vezes, como uma migração.
Confira Tipos de gatilho para trabalhos do Databricks.
Novas tentativas
As repetições 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 de reinicialização. Alguns recursos no Azure Databricks, como a evolução do esquema com o Streaming estruturado, pressupõem que você execute trabalhos com repetições para redefinir o ambiente e permitir que um fluxo de trabalho prossiga.
Se você especificar repetições para uma tarefa, a tarefa será reiniciada até o número especificado de vezes mediante a ocorrência de um erro. Nem todas as configurações de trabalho dão suporte a repetições de tentativa de tarefa. Consulte Definir uma política de repetição.
Ao executar no modo de gatilho contínuo, o Databricks repetirá automaticamente com uma retirada exponencial. Confira Como as falhas são tratadas em trabalhos contínuos?.
Tarefas condicionais Run 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 foram bem-sucedidos
- Pelo menos um foi bem-sucedido
- Nenhum falhou
- Tudo concluído
- Pelo menos um falhou
- Todos falharam
Consulte Configurar dependências de tarefas.
Tarefas condicionais If/else
Você pode usar o tipo de tarefa If/else para especificar condicionais com base em algum valor. Consulte Adicionar lógica de ramificação a um trabalho com a tarefa If/else.
Os trabalhos dão suporte a taskValues
que você define na lógica e permitem que você retorne os resultados de alguma computação 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 de condicionais:
==
!=
>
>=
<
<=
Consulte também:
- Usar valores de tarefa para transmitir informações entre tarefas.
- O que é uma referência de valor dinâmico?
- Trabalhos parametrizados
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.
Adicionar a tarefa For each
a um trabalho requer a definição de 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 de trabalhos do Databricks. Há suporte a vários métodos de passagem de parâmetros para a tarefa aninhada.
Consulte Executar uma tarefa de trabalho do Azure Databricks parametrizada em um loop.
Limite de duração
Você pode especificar um limite de duração para enviar um aviso ou parar uma tarefa ou trabalho se uma duração especificada for excedida. Exemplos de quando é útil definir essa configuração incluem os seguintes:
- Você tem tarefas propensas a ficar presas em um estado suspenso.
- Você precisa avisar um engenheiro se um SLA de um fluxo de trabalho for excedido.
- Para evitar custos inesperados, provoque a falha de um trabalho configurado com um cluster grande.
Confira Configurar um tempo esperado de conclusão ou um tempo limite para um trabalho e Configurar um tempo esperado de conclusão ou um tempo limite para uma tarefa.
Simultaneidade
A maioria dos trabalhos é configurada com o padrão de um trabalho simultâneo. Isso significa que, se uma execução de trabalho anterior não tiver sido concluída quando um novo trabalho for disparado, a próxima execução do trabalho será ignorada.
Há alguns casos de uso para aumentar a simultaneidade, mas a maioria das cargas de trabalho não exige alterar essa configuração.
Para obter mais informações sobre como configurar a simultaneidade, consulte Configurações de enfileiramento e simultaneidade de trabalhos do Databricks.
Como faço para monitorar trabalhos?
A interface do usuário de trabalhos permite que você veja as execuções de trabalho, incluindo execuções em andamento. Confira Monitoramento e observabilidade para trabalhos do Databricks.
Você pode receber notificações quando um trabalho ou tarefa for iniciado, concluído ou falhar. Você pode enviar notificações para um ou mais destinos de endereços de email ou do sistema. Confira Adicionar notificações de email e sistema para eventos de trabalho.
As tabelas do sistema incluem um esquema lakeflow
em que você pode exibir registros relacionados à atividade de trabalho em sua conta. Confira a Referência da tabela do sistema de trabalhos.
Você também pode ingressar as tabelas do sistema de trabalhos com tabelas de cobrança para monitorar o custo dos trabalhos em sua conta. Confira Monitorar custos de trabalho com tabelas do sistema.
Limitações
As seguintes limitações existem:
- Um workspace é limitado a 2.000 execuções de tarefas simultâneas. Uma resposta
429 Too Many Requests
é retornada quando você solicita uma execução que não pode ser iniciada imediatamente. - O número de trabalhos que um workspace pode criar em uma hora é limitado a 10.000 (inclui “runs submit”). Esse limite também afeta os trabalhos criados pelos fluxos de trabalho da API REST e do notebook.
- Um workspace pode conter até 12.000 trabalhos salvos.
- Um trabalho pode conter até 100 tarefas.
Posso gerenciar fluxos de trabalho programaticamente?
O Databricks tem ferramentas e APIs que permitem agendar e orquestrar seus fluxos de trabalho programaticamente, incluindo o seguinte:
- CLI do Databricks
- Pacotes de Ativos do Databricks
- Extensão do Databricks para Visual Studio Code
- SDKs do Databricks
- API REST de trabalhos
Para obter mais informações sobre ferramentas de desenvolvedor, consulte Ferramentas de desenvolvedor.
Orquestração de fluxo de trabalho com o Apache AirFlow
Você pode usar o Apache Airflow para gerenciar e agendar fluxos de trabalho de dados. Com o Airflow, você define seu fluxo de trabalho em um arquivo Python, e o Airflow gerencia o agendamento e a execução do fluxo de trabalho. Confira Orquestrar trabalhos do Azure Databricks com o Apache Airflow.
Orquestração de fluxo de trabalho com o Azure Data Factory
O ADF (Azure Data Factory) é um serviço de integração de dados na nuvem que permite compor serviços de processamento, de movimentação e de armazenamento de dados em pipelines de dados automatizados. Você pode usar o ADF para orquestrar um trabalho do Azure Databricks como parte de um pipeline do ADF.
O ADF também tem suporte interno para executar notebooks do Databricks, scripts Python ou código empacotado em JARs em um pipeline do ADF.
Para saber como executar um notebook do Databricks em um pipeline do ADF, consulte Executar um notebook do Databricks com a atividade do notebook do Databricks no Azure Data Factory, seguido por Transformar dados executando um notebook do Databricks.
Para saber como executar um script Python em um pipeline do ADF, consulte Transformar dados executando uma atividade do Python no Azure Databricks.
Para saber como executar um pacote de códigos em JAR em um pipeline do ADF, consulte Transformar dados executando uma atividade JAR no Azure Databricks.