Condividi tramite


Eseguire l'override delle impostazioni del cluster in Bundle di asset di Databricks

Questo articolo descrive come eseguire l'override delle impostazioni per i cluster di Azure Databricks in Bundle di asset di Databricks. Vedere Che cosa sono i bundle di asset di Databricks?

Nei file di configurazione del bundle di Azure Databricks è possibile aggiungere le impostazioni del cluster in un mapping di primo livello resources con le impostazioni del cluster in un targets mapping, come indicato di seguito.

Per i processi, usare il job_cluster_key mapping all'interno di una definizione di processo per unire le impostazioni del cluster in un mapping di primo livello resources con le impostazioni del cluster in un targets mapping, ad esempio (i puntini di sospensione indicano il contenuto omesso, per brevità):

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

Se un'impostazione del cluster è definita sia nel mapping di primo livello che nel targets mapping per lo stesso job_cluster_key, l'impostazione nel targets mapping ha la precedenza sull'impostazione nel mapping di primo livelloresources.resources

Per le pipeline delta live tables, usare il label mapping all'interno cluster di una definizione di pipeline per unire le impostazioni del cluster in un mapping di primo livello resources con le impostazioni del cluster in un targets mapping, ad esempio (i puntini di sospensione indicano il contenuto omesso, per brevità):

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

Se un'impostazione del cluster è definita sia nel mapping di primo livello che nel targets mapping per lo stesso label, l'impostazione nel targets mapping ha la precedenza sull'impostazione nel mapping di primo livelloresources.resources

Esempio 1: Nuove impostazioni del cluster di processi definite in più mapping di risorse e senza conflitti di impostazioni

In questo esempio, spark_version nel mapping di primo livello resources viene combinato con node_type_id e num_workers nel resources mapping in targets per definire le impostazioni per i job_cluster_key puntini di sospensione denominati my-cluster (i puntini di sospensione indicano il contenuto omesso, per brevità):

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

Quando si esegue databricks bundle validate per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):

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

Esempio 2: Conflitto di nuove impostazioni del cluster di processi definite in più mapping di risorse

In questo esempio , spark_versione num_workers sono definiti sia nel mapping di primo livello resources che nel resources mapping in targets. In questo esempio spark_version e num_workers nel mapping in targets hanno la resources precedenza su spark_version e num_workers nel mapping di primo livello resources per definire le impostazioni per i job_cluster_key nomi my-cluster (i puntini di sospensione indicano il contenuto omesso, per brevità):

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

Quando si esegue databricks bundle validate per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):

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

Esempio 3: Impostazioni del cluster della pipeline definite in più mapping delle risorse e senza conflitti di impostazioni

In questo esempio, node_type_id nel mapping di primo livello resources viene combinato con num_workers nel resources mapping in targets per definire le impostazioni per i label nomi default (i puntini di sospensione indicano il contenuto omesso, per brevità):

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

Quando si esegue databricks bundle validate per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):

{
  "...": "...",
  "resources": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 1
          }
        ],
        "...": "..."
      }
    }
  }
}

Esempio 4: Impostazioni del cluster della pipeline in conflitto definite in più mapping di risorse

In questo esempio viene num_workers definito sia nel mapping di primo livello resources che nel resources mapping in targets. num_workersnel mapping in ha la resources precedenza num_workers nel mapping di primo livelloresources, per definire le impostazioni per il label denominato default (i puntini di sospensione indicano il contenuto omesso, per brevità):targets

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

Quando si esegue databricks bundle validate per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):

{
  "...": "...",
  "resources": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 2
          }
        ],
        "...": "..."
      }
    }
  }
}