Partager via


Remplacer les paramètres des tâches de travail dans les packs de ressources Databricks

Cet article décrit le remplacement des paramètres des tâches de travail Azure Databricks dans les packs de ressources Databricks. Consultez Que sont les packs de ressources Databricks ?

Dans les fichiers de paramètres de pack Azure Databricks, vous pouvez utiliser le mappage task dans une définition de tâche pour joindre les paramètres des tâches de travail d’un mappage resources de niveau supérieur avec les paramètres des tâches de travail d’un mappage targets, par exemple (les points de suspension indiquent du contenu omis, par souci de concision) :

# ...
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.
          # ...

Pour joindre le mappage de niveau resources supérieur et le targets mappage pour le même task, les task mappages task_key doivent être définis sur la même valeur.

Si un paramètre d’une tâche de travail est défini à la fois dans le mappage resources de niveau supérieur et le mappage targets pour le même task, le paramètre du mappage targets est prioritaire sur celui du mappage resources de niveau supérieur.

Exemple 1 : paramètres des tâches de travail définis dans plusieurs mappages de ressources et sans conflit de paramètres

Dans cet exemple, spark_version dans le mappage resources de niveau supérieur est combiné avec node_type_id et num_workers dans le mappage resources de targets pour définir les paramètres de task_key nommé my-task (les points de suspension indiquent du contenu omis, par souci de concision) :

# ...
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
          # ...

Lorsque vous exécutez databricks bundle validate pour cet exemple, le graphique résultant est le suivant (les points de suspension indiquent du contenu omis, par souci de concision) :

{
  "...": "...",
  "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"
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemple 2 : paramètres des tâches de travail en conflit définis dans plusieurs mappages de ressources

Dans cet exemple, spark_version et num_workers sont définis à la fois dans le mappage resources de niveau supérieur ainsi que dans le mappage resources dans targets. spark_version et num_workers dans le mappage resources en targets priorité spark_version et num_workers dans le mappage de niveau resources supérieur. Cela définit les paramètres du task_key nommé my-task (les points de suspension indiquent le contenu omis, à des fins de concision) :

# ...
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
          # ...

Lorsque vous exécutez databricks bundle validate pour cet exemple, le graphique résultant est le suivant (les points de suspension indiquent du contenu omis, par souci de concision) :

{
  "...": "...",
  "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"
          }
        ],
        "...": "..."
      }
    }
  }
}