Proposta de site feita pela Genesis Innovation · conteúdo do LinkedIn de Daniel Santos

Pular para o conteúdo
Daniel Santos

Wiki Databricks

Jobs e Workflows: orquestração no Databricks

Um job é um grafo de tarefas com dependências, agenda, tentativas e alertas. A agenda usa cron no formato Quartz, com segundos.

No Databricks, o orquestrador nativo é o Jobs (por muito tempo chamado Workflows; hoje aparece como *Lakeflow Jobs*). Um job é um DAG de tarefas: cada tarefa roda um notebook, um script Python, um pacote wheel, uma consulta SQL, um pipeline declarativo ou outro job, e só começa quando as tarefas de que depende terminaram.

Um pipeline medalhão como job

  • ingestao_bronze (sem dependência)
  • limpeza_silver depende de ingestao_bronze
  • gold_vendas e gold_clientes dependem de limpeza_silver e rodam em paralelo
  • qualidade depende das duas gold; se falhar, o job falha e avisa
YAMLArquivo de configuração.
resources:
  jobs:
    medalhao_diario:
      name: medalhao-diario
      schedule:
        quartz_cron_expression: "0 30 5 * * ?"
        timezone_id: America/Sao_Paulo
      tasks:
        - task_key: ingestao_bronze
          notebook_task: {notebook_path: ../notebooks/bronze.py}
        - task_key: limpeza_silver
          depends_on: [{task_key: ingestao_bronze}]
          notebook_task: {notebook_path: ../notebooks/silver.py}
          max_retries: 2
        - task_key: gold_vendas
          depends_on: [{task_key: limpeza_silver}]
          notebook_task: {notebook_path: ../notebooks/gold_vendas.py}

(Formato de um Databricks Asset Bundle; veja CI/CD para dados.)

Cron do Quartz: seis campos, com segundos

A agenda do job usa a sintaxe do Quartz: segundos minutos horas dia-do-mês mês dia-da-semana [ano]. Um dos dois campos de dia leva ? ("tanto faz").

  • 0 30 5 * * ?: todo dia às 05:30:00.
  • 0 0 */2 ? * MON-FRI: a cada duas horas, de segunda a sexta.
  • 0 0 6 1 * ?: dia 1 de cada mês, às 06:00.

A ferramenta "cron" deste site traduz uma expressão e lista as próximas execuções.

O que configurar além da agenda

  • Tentativas (max_retries) e intervalo entre elas: falha transitória (rede, nó perdido) não precisa de gente.
  • Tempo-limite por tarefa: job travado custa cluster parado.
  • Alertas de falha e de duração anormal.
  • Parâmetros (data de referência) em vez de "hoje" fixo no código: reprocessar um dia vira rodar o job com outro parâmetro.
  • Gatilho por chegada de arquivo ou por atualização de tabela, quando esperar o relógio é desperdício.

Fontes

Conhecimento compartilhado pela Genesis Innovation.