Condividi tramite


Sostituire le impostazioni delle attività dei processi nei Pacchetti di asset di Databricks

Questo articolo descrive come eseguire l'override delle impostazioni per le attività dei processi di Azure Databricks nei Pacchetti di asset di Databricks. Consulta Che cosa sono i pacchetti di asset di Databricks?

In Azure Databricks bundle configuration filesè possibile usare il mapping task all'interno di una definizione del processo per unire le impostazioni delle attività di processo in un mapping di resources di primo livello con le impostazioni dell'attività di processo in un mapping di targets, 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 di resources e il mapping di targets per lo stesso task, il task dei mapping di task_key deve essere impostato allo stesso valore.

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

Esempio 1: Impostazioni dei compiti lavorativi definite in più mapping di risorse e senza conflitti nelle impostazioni

In questo esempio, spark_version nel mapping di primo livello resources viene combinato con node_type_id e num_workers nel mapping resources in targets per definire le impostazioni per il task_key denominato 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 dei compiti lavorativi in conflitto definite in diversi mapping di risorse

In questo esempio, spark_versione num_workers sono definiti sia nel mapping resources di primo livello che nel mapping resources in targets. spark_version e num_workers nel mapping resources in targets hanno la precedenza su spark_version e num_workers nella mappatura di livello superiore resources. Definisce le impostazioni per il task_key denominato 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"
          }
        ],
        "...": "..."
      }
    }
  }
}