Partilhar via


Substituir configurações de tarefas de trabalho no Databricks Asset Bundles

Este artigo descreve como substituir as configurações para tarefas de trabalho do Azure Databricks em Databricks Asset Bundles. Consulte O que são Databricks Asset Bundles?

Nos arquivos de configuração de pacote do Azure Databricks, você pode usar o task mapeamento dentro de uma definição de trabalho para unir as configurações de tarefas de trabalho em um mapeamento de nível resources superior com as configurações de tarefa de trabalho em um targets mapeamento, por exemplo (reticências indicam conteúdo omitido, para 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 de nível resources superior e o targets mapeamento para o mesmo task, os task mapeamentos task_key devem ser definidos com o mesmo valor.

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

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

Neste exemplo, spark_version no mapeamento de nível resources superior é combinado com node_type_id e num_workers no resources mapeamento em targets para definir as configurações para o task_key nomeado 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 este exemplo, o gráfico resultante é o seguinte (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 conflitantes de tarefas de trabalho definidas em vários mapeamentos de recursos

Neste exemplo, spark_versione são definidos no mapeamento de nível resources superior e no resources mapeamento em targetsnum_workers . spark_versione num_workers no mapeamento em targets ter precedência sobre spark_version e num_workers no mapeamento de nível resources superior.resources Isso define as configurações para o task_key nome my-task (reticências 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 este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, para 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"
          }
        ],
        "...": "..."
      }
    }
  }
}