execução de uma tarefa parametrizada do Databricks Job em um loop

Este artigo discute o uso da tarefa For each com o trabalho Databricks, incluindo detalhes sobre como adicionar e configurar a tarefa na interface do usuário do trabalho. Use a tarefa For each para executar uma 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. O senhor não pode adicionar outra tarefa For each como tarefa aninhada.

Por exemplo, o senhor poderia usar a tarefa For each para executar um conjunto comum de transformações em várias tabelas, passando um nome de tabela de uma lista de nomes de tabela para cada iteração da tarefa.

Que tipos de parâmetros posso usar com a tarefa For each?

Para passar parâmetros de uma tarefa For each, o senhor pode:

Para saber como usar esses diferentes tipos de parâmetros ao adicionar ou editar uma tarefa For each, consulte a próxima seção Adicionar a tarefa Para cada tarefa a um trabalho.

Adicionar a tarefa For each a um trabalho

O senhor pode adicionar uma tarefa For each ao criar um trabalho ou editar uma tarefa em um trabalho existente. Para configurar uma tarefa For each:

  1. No menu suspenso Tipo, selecione Para cada um.

  2. Insira um nome para a tarefa no campo Nome da tarefa.

  3. Na caixa de texto Inputs (Entradas), defina os valores para a tarefa For each a ser iterada. Isso pode ser um dos seguintes:

    • Uma matriz de valores formatada em JSON. Isso pode ser uma matriz dos seguintes tipos de dados:

      • par key-value

      • strings, números ou Boolean types

      • Objetos JSON arbitrariamente complexos

    • referências de valores de tarefa. Para fazer referência aos valores de tarefa passados de uma tarefa anterior, use a sintaxe {{tasks.<task_name>.values.<task_value_name>}} para definir o valor na caixa de texto Inputs (Entradas). Por exemplo, se uma tarefa chamada generate_countries_list que precede a tarefa For each define o seguinte valor de tarefa:

      dbutils.jobs.taskValues.set(key = "countries", value = countries_array)

      Em seguida, a tarefa For each faz referência ao valor da tarefa na caixa de texto Inputs usando a seguinte sintaxe:

      {{tasks.generate_countries_list.values.countries}}.

    • Job parâmetros. Para fazer referência a um parâmetro de trabalho, use a seguinte sintaxe na caixa de texto Inputs (Entradas): {{job.parameters.<name>}}. Por exemplo, {{job.parameters.countries}}.

  4. Para definir opcionalmente o número de iterações que podem ser executadas em paralelo, insira um valor de Concurrency para a tarefa. O valor de default é 1.

  5. Para receber notificações opcionais sobre a tarefa começar, sucesso ou falha, clique em + Add (Adicionar). Consulte Adicionar notificações em um trabalho.

  6. Para concluir a configuração da tarefa For each e adicionar uma tarefa aninhada para execução em cada iteração, clique em Add a tarefa to loop over.

  7. Selecione um tipo de tarefa e opções de configuração para a tarefa aninhada. As tarefas aninhadas são tipos de tarefas padrão e têm as mesmas opções de configuração. Consulte Configurar e editar Databricks tarefa.

  8. Para fazer referência aos parâmetros passados da tarefa For each, clique em Parameters (Parâmetros). Use a referência {{input}} para definir o valor como o valor da matriz de cada iteração ou {{input.<key>}} para referenciar campos de objetos individuais ao iterar em uma lista de objetos.

    Adicionar uma tarefa aninhada a uma tarefa For each
  9. Clique em Criar tarefa.

Alternar entre a tarefa For each e a tarefa aninhada

A tarefa For each aparece na UI de Jobs como um nó com o nó de tarefa aninhado dentro do nó For each. Para alternar entre a tarefa For each e a tarefa aninhada, clique nos respectivos nós.

Jobs UI DAG view switch to Para cada tarefa
Jobs UI DAG view mudar para tarefa aninhada

Referência a uma tarefa For each na tarefa downstream

A tarefa For each é a tarefa de nível superior, e a tarefa downstream pode especificá-la como uma dependência. A tarefa downstream não pode depender ou fazer referência à tarefa aninhada.

executar e monitorar um Job com uma tarefa For each

Executar um trabalho com uma tarefa For each é idêntico a executar qualquer outro trabalho.

A visualização e o gerenciamento da execução do trabalho também são idênticos aos de qualquer outro trabalho, exceto o histórico de execução da tarefa para uma tarefa For each, que é apresentado como uma tabela de iterações de tarefa. Veja a história da execução da tarefa para cada tarefa.