Visão geral da orquestração no Databricks
O Azure Databricks fornece uma experiência interna para orquestração de cargas de trabalho de processamento de dados, para que você possa coordenar e executar várias tarefas como parte de um fluxo de trabalho maior. Você pode simplificar, otimizar e agendar a execução de tarefas frequentes e repetíveis, o que facilita o gerenciamento de fluxos de trabalho complexos.
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?
No Databricks, uma tarefa é usada para orquestrar e agendar tarefas dentro do Databricks em um fluxo de trabalho . Fluxos de trabalho comuns de processamento de dados incluem fluxos de trabalho ETL, notebooks em execução e fluxos de trabalho de ML (machine learning), bem como integração com sistemas externos como dbt e ADF (Azure Data Factory).
Os trabalhos consistem em uma ou mais tarefas e dão suporte à lógica de fluxo de controle personalizado, como ramificação (instruções if/else) ou loop (para cada instrução) usando uma interface do usuário de criação visual. As tarefas podem carregar ou transformar dados em um fluxo de trabalho ETL ou criar, treinar e implantar modelos de ML de forma controlada e repetível como parte de seus pipelines de aprendizado de máquina.
Exemplo: trabalho diário de processamento e validação de dados
O exemplo a seguir mostra um trabalho no Azure Databricks.
Este trabalho de exemplo tem as seguintes características:
- A primeira tarefa ingere dados de receita.
- A segunda tarefa é uma verificação if/else em busca de nulos.
- Caso contrário, uma tarefa de transformação será executada.
- Caso contrário, ele executa uma tarefa de notebook com uma validação da qualidade dos dados.
- Está programado para ser executado todos os dias às 11h29 da manhã.
Para obter uma rápida introdução à criação de seu próprio trabalho, consulte Criar seu primeiro fluxo de trabalho com um trabalho do Azure Databricks.
Casos de uso comuns
Desde princípios básicos de engenharia de dados até aprendizado de máquina avançado e integração direta de ferramentas, esses casos de uso comuns mostram a amplitude dos recursos que impulsionam a análise moderna, a automação de fluxo de trabalho e a escalabilidade da infraestrutura.
| Engenharia de dados | Pipelines de ETL (extração, transformação e carregamento): automatize a extração de dados de várias fontes, transforme os dados em um formato adequado e carregue-os em um data warehouse ou um data lake. Confira Executar sua primeira carga de trabalho ETL no Azure Databricks
Migração de dados: mover os dados de um sistema para outro.
Processamento contínuo de dados: use trabalhos para tarefas de processamento contínuo de dados, como a transmissão contínua de dados de fontes como o Kafka, e grave-as em tabelas Delta. | | Ciência de dados e machine learning | Treinamento de modelo: Agendar e executar trabalhos de treinamento de modelo de machine learning para garantir que os modelos sejam treinados nos dados mais recentes.
Inferência em Lote: Automatize o processo de execução de tarefas de inferência em lote para gerar previsões de modelos treinados.
Ajuste de hiperparâmetros: Orquestrar trabalhos de ajuste de hiperparâmetros para otimizar modelos de aprendizado de máquina. | | Análise e relatórios | Consultas agendadas: execute consultas SQL em um trabalho agendado para gerar relatórios ou atualizar painéis.
Agregação de dados: execute tarefas regulares de agregação de dados para preparar dados para análise. | | Como automatizar tarefas | Fluxos de trabalho de várias tarefas: crie fluxos de trabalho complexos que envolvam várias tarefas, como executar uma série de notebooks, arquivos JAR, consultas SQL ou pipelines do Delta Live Tables.
lógica condicional: use a lógica condicional para controlar o fluxo de tarefas com base no êxito ou falha de tarefas anteriores. | | integração com outras ferramentas | Airflow edo Azure Data Factory (ADF): disparar trabalhos do Azure Databricks usando ferramentas de orquestração externas, como do Apache Airflow e do Azure Data Factory, permitindo fluxos de trabalho mais complexos e integrados.
Notificações e monitoramento: configure notificações e monitore os resultados da execução do trabalho usando a interface do usuário, a CLI ou a API do Azure Databricks ou usando integrações com ferramentas como Slack e webhooks. | | IaC (infraestrutura como código) | Pacotes de Ativos do Databricks: gerencie trabalhos e outros recursos como código para facilitar o controle de versão, a revisão de código e as práticas de CI/CD (integração contínua e entrega contínua). |
Conceitos de orquestração
Há três conceitos principais ao usar a orquestração no Azure Databricks: trabalhos, tarefas e gatilhos.
Trabalho – Um trabalho é o principal recurso para coordenar, agendar e executar suas operações. Os trabalhos podem variar em complexidade de uma única tarefa executando um notebook do Azure Databricks para centenas de tarefas com lógica condicional e dependências. As tarefas de um processo são representadas visualmente por um Grafo Acíclico Dirigido (DAG). Você pode especificar propriedades para o trabalho, incluindo:
- Gatilho – Define quando executar a tarefa.
- Parâmetros – parâmetros de tempo de execução que são enviados automaticamente para tarefas dentro do trabalho.
- Notificações – emails ou webhooks a serem enviados quando um trabalho falha ou demora mais do que o esperado.
- Git – configurações de controle do código-fonte para as tarefas de trabalho.
Task – Uma tarefa é uma unidade específica de trabalho dentro de um trabalho. Cada tarefa pode executar uma variedade de operações, incluindo:
- Uma tarefa de notebook executa um notebook do Databricks. Especifique o caminho para o notebook e todos os parâmetros necessários.
- Uma tarefa de pipeline executa um pipeline. Você pode especificar um pipeline existente de Tabelas Dinâmicas Delta, como uma exibição materializada ou uma tabela de streaming.
- Uma tarefa de script python executa um arquivo Python. Você fornece o caminho para o arquivo e todos os parâmetros necessários.
Há muitos tipos de tarefas. Para obter uma lista completa, consulte Tipos de tarefas. As tarefas podem ter dependências em outras tarefas e executar condicionalmente outras tarefas, permitindo que você crie fluxos de trabalho complexos com lógica condicional e dependências.
Gatilho – Um gatilho é um mecanismo que inicia uma tarefa com base em condições ou eventos específicos. Um gatilho pode ser baseado em tempo, como executar um trabalho em um horário agendado (por exemplo, sempre às 2 da manhã) ou baseado em eventos, como executar um trabalho quando novos dados chegam ao armazenamento em nuvem.
Monitoramento e observabilidade
Os trabalhos fornecem suporte interno para monitoramento e observabilidade. Os tópicos a seguir fornecem uma visão geral desse suporte. Para mais detalhes sobre trabalhos de monitoramento e orquestração, confira Monitoramento e observabilidade para trabalhos do Databricks.
Monitoramento e observabilidade de tarefas na IU – na IU do Azure Databricks, você pode exibir tarefas, incluindo detalhes como o proprietário da tarefa e o resultado da última execução, e filtrar por propriedades da tarefa. Você pode exibir um histórico de execuções de trabalho e obter informações detalhadas sobre cada tarefa no trabalho.
Status de execução de trabalho e métricas – O Databricks relata o sucesso da execução de trabalho, além de fornecer logs e métricas para cada tarefa de uma execução de trabalho, a fim de diagnosticar problemas e entender o desempenho.
Notificações e alertas – você pode configurar notificações para eventos de trabalho por email, Slack, webhooks personalizados e uma série de outras opções.
Consultas personalizadas por meio de tabelas do sistema – o Azure Databricks fornece tabelas de sistema que registram execuções de trabalho e tarefas em toda a conta. Você pode usar essas tabelas para consultar e analisar o desempenho e os custos do trabalho. Você pode criar painéis para visualizar tendências e métricas de trabalho, para ajudar a monitorar a integridade e o desempenho de seus fluxos de trabalho.
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 ver exemplos de como usar as ferramentas e as APIs para criar e gerenciar trabalhos, confira Automatizar a criação e o gerenciamento de trabalhos. Para obter documentação sobre todas as ferramentas de desenvolvedor disponíveis, consulte Ferramentas de desenvolvimento locais.
As ferramentas externas usam as ferramentas e as APIs do Databricks para agendar programaticamente fluxos de trabalho. Você pode agendar seus trabalhos usando ferramentas como o Azure Data Factory ou o Apache AirFlow.
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.