Condividi tramite


Sovrascrivere le impostazioni del cluster nei pacchetti di asset di Databricks

Questo articolo descrive come modificare le impostazioni per i cluster di Azure Databricks nei Pacchetti di asset Databricks. Consultare Che cosa sono i pacchetti di asset di Databricks?

In Azure Databricks bundle configuration files, è possibile unire le impostazioni del cluster in una mappatura di primo livello resources con le impostazioni del cluster in una mappatura targets, come indicato di seguito.

Per i lavori, utilizzare il mapping job_cluster_key all'interno di una definizione di lavoro per unire le impostazioni del cluster in un mapping resources di primo livello con le impostazioni del cluster in un mapping targets, 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 resources di primo livello che nel mapping targets per lo stesso job_cluster_key, l'impostazione nel mapping targets ha la precedenza sull'impostazione nel mapping di resources di primo livello.

Per le pipeline di tabelle live Delta, usare il mapping label all'interno della cluster di una definizione di pipeline per unire le impostazioni del cluster in un mapping resources di primo livello con le impostazioni del cluster in un mapping targets, 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 resources di primo livello che nel mapping targets per lo stesso label, l'impostazione nel mapping targets ha la precedenza sull'impostazione nel mapping di resources di primo livello.

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

In questo esempio, spark_version nel mapping di primo livello resources è combinato con node_type_id e num_workers nel mapping resources in targets per definire le impostazioni per il job_cluster_key denominato 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: Conflitti delle nuove impostazioni del cluster di lavoro definite in più mappature di risorse

In questo esempio, spark_versione num_workers sono definiti sia nel mapping resources di primo livello che nel mapping resources in targets. In questo esempio, spark_version e num_workers nel mapping resources in targets hanno la precedenza su spark_version e num_workers nel mapping resources di primo livello, per definire le impostazioni per il job_cluster_key denominato 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ù mappature delle risorse e senza conflitti di configurazione

In questo esempio, node_type_id nella mappatura di primo livello resources viene combinato con num_workers nella mappatura resources in targets per definire le impostazioni per l'label denominata 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, num_workers è definito sia nel mapping resources di primo livello che nel mapping resources in targets. num_workers nel mapping resources in targets prendono priorità su num_workers nel mapping a livello superiore resources per definire le impostazioni per il label denominato default (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

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