Partage via


Remplacer les paramètres des clusters dans les packs de ressources Databricks

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

Dans les fichiers de configuration du pack Azure Databricks, vous pouvez joindre comme suit les paramètres du cluster dans un mappage resources de niveau supérieur avec les paramètres du cluster dans un mappage targets.

Pour les tâches, utilisez le mappage job_cluster_key dans une définition de tâche pour joindre les paramètres de cluster dans un mappage resources de niveau supérieur avec les paramètres de cluster dans un mappage targets, par exemple (les points de suspension indiquent le contenu omis, pour une concision) :

# ...
resources:
  jobs:
    <some-unique-programmatic-identifier-for-this-job>:
      # ...
      job_clusters:
        - job_cluster_key: <some-unique-programmatic-identifier-for-this-key>
          new_cluster:
            # Cluster settings.

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

Si un paramètre d'un cluster est défini à la fois dans le mappage resources de niveau supérieur et le mappage targets pour le même job_cluster_key, le paramètre du mappage targets est prioritaire sur celui du mappage resources de niveau supérieur.

Pour les pipelines Delta Live Tables, utilisez le mappage label dans le cluster d'une définition de pipeline pour joindre les paramètres de cluster dans un mappage resources de niveau supérieur avec les paramètres du cluster dans un mappage targets, par exemple (les points de suspension indiquent le contenu omis, pour la concision) :

# ...
resources:
  pipelines:
    <some-unique-programmatic-identifier-for-this-pipeline>:
      # ...
      clusters:
        - label: default | maintenance
          # Cluster settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      pipelines:
        <the-matching-programmatic-identifier-for-this-pipeline>:
          # ...
          clusters:
            - label: default | maintenance
              # Any more cluster settings to join with the settings from the
              # resources mapping for the matching top-level label.
          # ...

Si un paramètre d'un cluster est défini à la fois dans le mappage resources de niveau supérieur et le mappage targets pour le même label, le paramètre du mappage targets est prioritaire sur celui du mappage resources de niveau supérieur.

Exemple 1 : paramètres des nouveaux clusters 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 job_cluster_key nommé my-cluster (les points de suspension indiquent du contenu omis, par souci de concision) :

# ...
resources:
  jobs:
    my-job:
      name: my-job
      job_clusters:
        - job_cluster_key: my-cluster
          new_cluster:
            spark_version: 13.3.x-scala2.12

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          job_clusters:
            - job_cluster_key: my-cluster
              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": {
        "job_clusters": [
          {
            "job_cluster_key": "my-cluster",
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 1,
              "spark_version": "13.3.x-scala2.12"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemple 2 : paramètres des nouveaux clusters 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. Dans cet exemple, spark_version et num_workers dans le mappage resources de targets sont prioritaires sur spark_version et num_workers dans le mappage resources de niveau supérieur, pour définir les paramètres de job_cluster_key nommé my-cluster (les points de suspension indiquent du contenu omis, par souci de concision) :

# ...
resources:
  jobs:
    my-job:
      name: my-job
      job_clusters:
        - job_cluster_key: my-cluster
          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
          job_clusters:
            - job_cluster_key: my-cluster
              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": {
        "job_clusters": [
          {
            "job_cluster_key": "my-cluster",
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 2,
              "spark_version": "12.2.x-scala2.12"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemple 3 : paramètres de clusters définis dans plusieurs mappages des ressources et sans conflit de paramètres

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

# ...
resources:
  pipelines:
    my-pipeline:
      clusters:
        - label: default
          node_type_id: Standard_DS3_v2

targets:
  development:
    resources:
      pipelines:
        my-pipeline:
          clusters:
            - label: default
              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": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 1
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemple 4 : conflits entre les paramètres des clusters de pipelines définis dans plusieurs mappages des ressources

Dans cet exemple, num_workers est défini à la fois dans le mappage de resources de premier niveau ainsi que dans le mappage de resources dans targets. num_workers dans le mappage resources dans targets sont prioritaires sur num_workers dans le mappage de niveau supérieur resources, pour définir les paramètres de label nommé default (les points de suspension indiquent du contenu omis, par souci de concision) :

# ...
resources:
  pipelines:
    my-pipeline:
      clusters:
        - label: default
          node_type_id: Standard_DS3_v2
          num_workers: 1

targets:
  development:
    resources:
      pipelines:
        my-pipeline:
          clusters:
            - label: default
              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": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 2
          }
        ],
        "...": "..."
      }
    }
  }
}