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 no Databricks Asset Bundles. Consulte O que são Databricks Asset Bundles?

No Azure Databricks ficheiros de configuração do pacote, pode utilizar o mapeamento de task dentro de uma definição de uma tarefa para unir as configurações das tarefas no mapeamento superior resources com as configurações das tarefas no mapeamento targets, 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 resources de nível superior e o mapeamento de targets para a mesma task, a task_key dos mapeamentos de task deve ser definida 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 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 superior resources é combinado com node_type_id e num_workers no mapeamento de 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 se executa databricks bundle validate neste exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido para maior 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 num_workers são definidas 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 definições para o task_key chamado my-task (reticências indicam conteúdo omitido, por concisão).

# ...
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 se executa databricks bundle validate neste exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido para maior 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"
          }
        ],
        "...": "..."
      }
    }
  }
}