Condividi tramite


Eseguire l'override delle impostazioni delle attività del processo in Aggregazioni di asset di Databricks

Questo articolo descrive come eseguire l'override delle impostazioni per le attività di processo 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 usare il task mapping all'interno di una definizione del processo per unire le impostazioni delle attività di processo in un mapping di primo livello resources con le impostazioni dell'attività di processo 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>:
      # ...
      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.
          # ...

Per unire il mapping di primo livello resources e il targets mapping per lo stesso task, i task mapping devono task_key essere impostati sullo stesso valore.

Se un'impostazione di attività di processo viene definita sia nel mapping di primo livello che nel targets mapping per lo stesso task, l'impostazione nel targets mapping ha la precedenza sull'impostazione nel mapping di primo livelloresources.resources

Esempio 1: Impostazioni delle attività di processo definite in più mapping delle 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 task_key puntini di sospensione denominati my-task (i puntini di sospensione indicano il contenuto omesso, per brevità):

# ...
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 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": {
        "tasks": [
          {
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 1,
              "spark_version": "13.3.x-scala2.12"
            },
            "task-key": "my-task"
          }
        ],
        "...": "..."
      }
    }
  }
}

Esempio 2: Impostazioni delle attività di processo in conflitto 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. spark_versione num_workers nel mapping in targets hanno la resources precedenza e spark_versionnum_workers nel mapping di primo livelloresources. In questo modo vengono definite le impostazioni per i task_key puntini di sospensione denominati my-task (i puntini di sospensione indicano il contenuto omesso, per brevità):

# ...
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 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": {
        "tasks": [
          {
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 2,
              "spark_version": "12.2.x-scala2.12"
            },
            "task_key": "my-task"
          }
        ],
        "...": "..."
      }
    }
  }
}