Partilhar via


Adicionar tarefas a trabalhos no Databricks Asset Bundles

Este artigo fornece exemplos de vários tipos de tarefas que você pode adicionar aos trabalhos do Azure Databricks no Databricks Asset Bundles. Consulte O que são Databricks Asset Bundles?.

A maioria dos tipos de tarefas de trabalho tem parâmetros específicos de tarefas entre suas configurações suportadas, mas você também pode definir parâmetros de trabalho que são passados para tarefas. As referências de valor dinâmico são suportadas para parâmetros de trabalho, que permitem a passagem de valores específicos para o trabalho executado entre tarefas. Consulte O que é uma referência de valor dinâmico?.

Nota

Você pode substituir as configurações de tarefas de trabalho. Consulte Definições de tarefas substituíveis nos Databricks Asset Bundles.

Gorjeta

Para gerar rapidamente a configuração de recursos para um trabalho existente usando a CLI do Databricks, você pode usar o bundle generate job comando. Consulte os comandos de bundle.

Tarefa do caderno

Use essa tarefa para executar um bloco de anotações.

O exemplo a seguir adiciona uma tarefa de bloco de anotações a um trabalho e define um parâmetro de trabalho chamado my_job_run_id. O caminho para a implantação do notebook é relativo ao arquivo de configuração no qual a tarefa é declarada. A tarefa obtém o notebook do local onde está implantado no espaço de trabalho do Azure Databricks.

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      parameters:
        - name: my_job_run_id
          default: '{{job.run_id}}'

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > notebook_task na carga de solicitação na operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expressos em formato YAML. Veja a tarefa do caderno de anotações para tarefas.

Tarefa de condição se/senão

O condition_task permite que você adicione uma tarefa com lógica condicional if/else ao seu trabalho. A tarefa avalia uma condição que pode ser usada para controlar a execução de outras tarefas. A tarefa de condição não requer a execução de um cluster e não suporta novas tentativas ou notificações. Para obter mais informações sobre a tarefa if/else, consulte Adicionar lógica de ramificação a um trabalho com a tarefa If/else.

O exemplo a seguir contém uma tarefa de condição e uma tarefa de caderno de notas, em que a tarefa de caderno de notas apenas é executada se o número de reparações de trabalho for menor que 5.

resources:
  jobs:
    my-job:
      name: my-job
      tasks:
        - task_key: condition_task
          condition_task:
            op: LESS_THAN
            left: '{{job.repair_count}}'
            right: '5'
        - task_key: notebook_task
          depends_on:
            - task_key: condition_task
              outcome: 'true'
          notebook_task:
            notebook_path: ../src/notebook.ipynb

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > condition_task na carga de solicitação na operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expressos em formato YAML.

Para cada tarefa

O for_each_task permite que você adicione uma tarefa com um para cada loop ao seu trabalho. A tarefa executa uma tarefa aninhada para cada dado de entrada fornecido. Para obter mais informações sobre o for_each_task, consulte Usar uma tarefa For each para executar outra tarefa em um loop.

O exemplo a seguir adiciona um for_each_task a um trabalho, onde ele faz um loop sobre os valores de outra tarefa e os processa.

resources:
  jobs:
    my_job:
      name: my_job
      tasks:
        - task_key: generate_countries_list
          notebook_task:
            notebook_path: ../src/generate_countries_list.ipnyb
        - task_key: process_countries
          depends_on:
            - task_key: generate_countries_list
          for_each_task:
            inputs: '{{tasks.generate_countries_list.values.countries}}'
            task:
              task_key: process_countries_iteration
              notebook_task:
                notebook_path: ../src/process_countries_notebook.ipnyb

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > for_each_task na carga de solicitação na operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expressos em formato YAML.

Tarefa de script Python

Use esta tarefa para executar um arquivo Python.

O exemplo a seguir adiciona uma tarefa de script Python a um trabalho. O caminho para o arquivo Python ser implantado é relativo ao arquivo de configuração no qual essa tarefa é declarada. A tarefa obtém o arquivo Python do local em que foi implantado no workspace do Azure Databricks.

resources:
  jobs:
    my-python-script-job:
      name: my-python-script-job

      tasks:
        - task_key: my-python-script-task
          spark_python_task:
            python_file: ./my-script.py

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > spark_python_task no payload da solicitação da operação create job, conforme definido em POST /api/2.1/jobs/create na referência da API REST, no formato YAML. Consulte também Tarefa de script Python para trabalhos.

Tarefa de roda Python

Use essa tarefa para executar um arquivo de roda do Python.

O exemplo a seguir adiciona uma tarefa de roda Python a um trabalho. O caminho para o ficheiro 'wheel' do Python que se pretende implementar é relativo ao ficheiro de configuração onde esta tarefa é declarada. Consulte Dependências da biblioteca Databricks Asset Bundles.

resources:
  jobs:
    my-python-wheel-job:
      name: my-python-wheel-job
      tasks:
        - task_key: my-python-wheel-task
          python_wheel_task:
            entry_point: run
            package_name: my_package
          libraries:
            - whl: ./my_package/dist/my_package-*.whl

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > python_wheel_task na carga de solicitação na operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expressos em formato YAML. Consulte também Desenvolver um arquivo de roda Python usando Databricks Asset Bundles e tarefa Python Wheel para trabalhos.

Tarefa JAR

Use essa tarefa para executar um JAR. Você pode fazer referência a bibliotecas JAR locais ou aquelas em um espaço de trabalho, num volume do Catálogo Unity ou num local de armazenamento em nuvem externo. Consulte Dependências da biblioteca Databricks Asset Bundles.

O exemplo a seguir adiciona uma tarefa JAR a um trabalho. O caminho para o JAR é para o local do volume especificado.

resources:
  jobs:
    my-jar-job:
      name: my-jar-job
      tasks:
        - task_key: my-jar-task
          spark_jar_task:
            main_class_name: org.example.com.Main
          libraries:
            - jar: /Volumes/main/default/my-volume/my-project-0.1.0-SNAPSHOT.jar

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > spark_jar_task na carga de solicitação na operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expressos em formato YAML. Consulte Tarefa JAR para trabalhos.

Tarefa de arquivo SQL

Use essa tarefa para executar um arquivo SQL localizado em um espaço de trabalho ou em um repositório Git remoto.

O exemplo a seguir adiciona uma tarefa de arquivo SQL a um trabalho. Esta tarefa de arquivo SQL usa o SQL warehouse especificado para executar o arquivo SQL especificado.

resources:
  jobs:
    my-sql-file-job:
      name: my-sql-file-job
      tasks:
        - task_key: my-sql-file-task
          sql_task:
            file:
              path: /Users/someone@example.com/hello-world.sql
              source: WORKSPACE
            warehouse_id: 1a111111a1111aa1

Para obter a ID de um armazém SQL, abra a página de definições do armazém SQL e, em seguida, copie o ID encontrado entre parênteses após o nome do armazém no campo Nome no separador Descrição Geral .

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > sql_task > file na carga de solicitação da operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expresso em formato YAML. Consulte Tarefa SQL para trabalhos.

Tarefa de fluxo de trabalho DLT

Você usa esta tarefa para executar um pipeline de DLT. Consulte O que é DLT?.

O exemplo a seguir adiciona uma tarefa de pipeline de DLT a um trabalho. Esta tarefa de pipeline DLT executa o pipeline especificado.

resources:
  jobs:
    my-pipeline-job:
      name: my-pipeline-job
      tasks:
        - task_key: my-pipeline-task
          pipeline_task:
            pipeline_id: 11111111-1111-1111-1111-111111111111

Você pode obter o ID de um pipeline abrindo o pipeline no espaço de trabalho e copiando o valor do Pipeline ID na guia Detalhes do Pipeline da página de configurações do pipeline.

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > pipeline_task na carga de solicitação na operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expressa em formato YAML. Consulte tarefa do pipeline de DLT para tarefas.

Tarefa DBT

Use essa tarefa para executar um ou mais comandos dbt. Consulte Conectar-se ao dbt Cloud.

O exemplo a seguir adiciona uma tarefa dbt a um trabalho. Esta tarefa dbt usa o SQL warehouse especificado para executar os comandos dbt especificados.

resources:
  jobs:
    my-dbt-job:
      name: my-dbt-job
      tasks:
        - task_key: my-dbt-task
          dbt_task:
            commands:
              - 'dbt deps'
              - 'dbt seed'
              - 'dbt run'
            project_directory: /Users/someone@example.com/Testing
            warehouse_id: 1a111111a1111aa1
          libraries:
            - pypi:
                package: 'dbt-databricks>=1.0.0,<2.0.0'

Para obter a ID de um armazém SQL, abra a página de definições do armazém SQL e, em seguida, copie o ID encontrado entre parênteses após o nome do armazém no campo Nome no separador Descrição Geral .

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > dbt_task na solicitação da operação de criação de trabalho conforme definida em POST /api/2.1/jobs/create na referência da API REST, expressa em formato YAML. Consulte dbt task para trabalhos.

O Databricks Asset Bundles também inclui um modelo de dbt-sql projeto que define um trabalho com uma tarefa dbt, bem como perfis dbt para trabalhos dbt implantados. Para obter informações sobre modelos Databricks Asset Bundles, consulte Default bundle templates.

Executar tarefa de trabalho

Use esta tarefa para executar outra tarefa.

O exemplo a seguir contém uma tarefa de execução no segundo trabalho que roda o primeiro trabalho.

resources:
  jobs:
    my-first-job:
      name: my-first-job
      tasks:
        - task_key: my-first-job-task
          new_cluster:
            spark_version: '13.3.x-scala2.12'
            node_type_id: 'i3.xlarge'
            num_workers: 2
          notebook_task:
            notebook_path: ./src/test.py
    my_second_job:
      name: my-second-job
      tasks:
        - task_key: my-second-job-task
          run_job_task:
            job_id: ${resources.jobs.my-first-job.id}

Este exemplo utiliza uma substituição para obter o ID do trabalho a executar. Para obter o ID de um trabalho pela interface do utilizador, abra o trabalho no espaço de trabalho e copie o ID do valor ID do trabalho no separador Detalhes do Trabalho da página de configurações do trabalho.

Para obter mapeamentos adicionais que pode definir para esta tarefa, consulte tasks > run_job_task na carga de solicitação na operação de criação de trabalho, conforme definido em POST /api/2.1/jobs/create na referência da API REST, expressos em formato YAML.