programar e orquestrar o fluxo de trabalho
Databricks Workflows possui ferramentas que permitem ao senhor 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 e opções relacionados ao gerenciamento de cargas de trabalho de produção usando Databricks Jobs.
O que são empregos na Databricks?
Um Job é a unidade principal para programar e orquestrar cargas de trabalho de produção em Databricks. Os trabalhos consistem em uma ou mais tarefas. Juntos, tarefa e Job permitem que o senhor configure e implante o seguinte:
Lógica personalizada, incluindo Spark, SQL, OSS Python, ML e código arbitrário.
computar recurso com ambientes personalizados e biblioteca.
programar e acionar cargas de trabalho em execução.
Lógica condicional para fluxo de controle entre tarefas.
Os trabalhos fornecem uma abordagem processual para definir relacionamentos entre tarefas. Delta Live Tables O pipeline fornece uma abordagem declarativa para definir as relações entre o conjunto de dados e as transformações. O senhor pode incluir o pipeline Delta Live Tables como uma tarefa em um trabalho. Consulte Delta Live Tables pipeline tarefa for Job.
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 Jobs?
O senhor pode criar e executar um trabalho usando a UI do Jobs, o Databricks CLI ou invocando o Jobs API. Usando a UI ou o site API, o senhor pode reparar e reexecutar um trabalho com falha ou cancelado. O senhor pode monitorar os resultados da execução do trabalho usando a interface do usuário, CLI, API, e notificações (por exemplo, email, destino do webhook ou notificações do Slack).
Se o senhor preferir uma abordagem Infrastructure-as-Code (IaC) para configurar e orquestrar seus trabalhos, use Databricks ativo Bundles (DABs). Os bundles podem conter definições YAML de Job e tarefa, são gerenciados usando o Databricks CLI e podem ser compartilhados e executados em diferentes espaços de trabalho de destino (como desenvolvimento, preparação e produção). Para saber mais sobre o uso de DABs para configurar e orquestrar seu trabalho, consulte Databricks ativo Bundles.
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 (como um Databricks Notebook) 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 Configurar compute para o trabalho.
Um programar especificado para quando o trabalho deve ser executado. Opcionalmente, o senhor pode omitir a definição de um programar e acionar o Job manualmente.
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 a ser executada como um passo em um trabalho. A tarefa pode variar em complexidade e pode incluir o seguinte:
Um caderno de anotações
UM JAR
Consultas 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. Consulte Usar valores de tarefa para passar informações entre tarefas.
Quais opções de fluxo de controle estão disponíveis para o Job?
Ao configurar o Job e a tarefa no Job, o senhor pode personalizar as configurações que controlam a execução de todo o Job e da tarefa individual. Essas opções são:
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 o Job manualmente, 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 as chamadas REST API .
O senhor tem um trabalho que raramente é executado e requer intervenção manual 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.
Novas tentativas
As tentativas especificam quantas vezes uma determinada tarefa deve ser reexecutada 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 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.
Se o senhor especificar novas tentativas para uma tarefa, ela será reiniciada até o número de vezes especificado se encontrar um erro. Nem todas as configurações de trabalho suportam novas tentativas de tarefa. Consulte Definir uma política de novas tentativas.
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
Consulte Configurar dependências da tarefa
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 a um trabalho com a tarefa 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 você pode querer definir essa configuração incluem o seguinte:
O senhor tem uma tarefa propensa a ficar presa em um estado suspenso.
O senhor deve avisar um engenheiro se o SLA de um fluxo de trabalho for excedido.
Para evitar custos inesperados, o senhor deseja reprovar um trabalho configurado com um grande cluster.
Consulte Configurar um tempo de conclusão esperado ou um tempo limite para um trabalho e Configurar um tempo de conclusão esperado ou um tempo limite para uma tarefa.
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.
Existem alguns casos de uso para aumentar a simultaneidade, mas a maioria das cargas de trabalho não exige a alteração dessa configuração.
Para obter mais informações sobre como configurar a simultaneidade, consulte Databricks Jobs queueing and concurrency settings.
Como posso monitorar o trabalho?
A Job UI permite que o senhor veja a execução do trabalho, incluindo a execução em andamento. Consulte monitoramento e observabilidade para Databricks Jobs.
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:
A workspace está limitada a 2000 concorrente tarefa execução. Uma resposta
429 Too Many Requests
é retornada quando o senhor solicita uma execução que não pode começar 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 possui 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 de desenvolvedor.
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 .