Compartilhar via


Substituir as configurações das tarefas de trabalho nos Pacotes de Ativos do Databricks

Este artigo descreve como substituir as configurações das tarefas de trabalho do Azure Databricks em Pacotes de Ativos do Databricks. Veja O que são pacotes de ativos do Databricks?

Nos arquivos de configuração do pacote do Azure Databricks, você pode utilizar o mapeamento task em uma definição de trabalho para unir as configurações das tarefas de trabalho em um mapeamento resources de nível superior com as configurações das tarefas de trabalho em um mapeamento targets, por exemplo (as reticências indicam um conteúdo omitido, por brevidade):

# ...
resources:
  jobs:
    <some-unique-programmatic-identifier-for-this-job>:
      # ...
      tasks:
        - task_key: <some-unique-programmatic-identifier-for-this-task>
          # Task settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      jobs:
        <the-matching-programmatic-identifier-for-this-job>:
          # ...
          tasks:
            - task_key: <the-matching-programmatic-identifier-for-this-key>
              # Any more task settings to join with the settings from the
              # resources mapping for the matching top-level task_key.
          # ...

Para unir o mapeamento resources de nível superior e o mapeamento targets para o mesmo task, o task_key dos mapeamentos task deve ser definido com o mesmo valor.

Se qualquer configuração de tarefa de trabalho for definida no mapeamento de resources de nível superior e no mapeamento de targets para o mesmo task, a configuração no mapeamento de targets terá precedência sobre a configuração no mapeamento de resources de nível superior.

Exemplo 1: Configurações de tarefa de trabalho definidas em vários mapeamentos de recursos e sem conflitos de configurações

Neste exemplo, spark_version no mapeamento resources de nível superior é combinado com node_type_id e num_workers no mapeamento resources em targets para definir as configurações do task_key chamado my-task (reticências indicam conteúdo omitido, para brevidade):

# ...
resources:
  jobs:
    my-job:
      name: my-job
      tasks:
        - task_key: my-key
          new_cluster:
            spark_version: 13.3.x-scala2.12

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          tasks:
            - task_key: my-task
              new_cluster:
                node_type_id: Standard_DS3_v2
                num_workers: 1
          # ...

Quando você executa databricks bundle validate para esse exemplo, o grafo resultante é o seguinte (as reticências indicam conteúdo omitido, para brevidade):

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "tasks": [
          {
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 1,
              "spark_version": "13.3.x-scala2.12"
            },
            "task-key": "my-task"
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemplo 2: Configurações de tarefa de trabalho conflitantes definidas em vários mapeamentos de recursos

Neste exemplo, spark_versione num_workers são definidos no mapeamento de resources de nível superior e no mapeamento de resources em targets. spark_version e num_workers no mapeamento de resources em targets têm precedência sobre spark_version e num_workers no mapeamento de resources de nível superior. Isso define as configurações para o task_key chamado my-task (as reticência indicam conteúdo omitido, para brevidade):

# ...
resources:
  jobs:
    my-job:
      name: my-job
      tasks:
        - task_key: my-task
          new_cluster:
            spark_version: 13.3.x-scala2.12
            node_type_id: Standard_DS3_v2
            num_workers: 1

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          tasks:
            - task_key: my-task
              new_cluster:
                spark_version: 12.2.x-scala2.12
                num_workers: 2
          # ...

Quando você executa databricks bundle validate para esse exemplo, o gráfico resultante é o seguinte (as elipses indicam conteúdo omitido, para fins de brevidade):

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "tasks": [
          {
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 2,
              "spark_version": "12.2.x-scala2.12"
            },
            "task_key": "my-task"
          }
        ],
        "...": "..."
      }
    }
  }
}