Sdílet prostřednictvím


Přepište pomocí nastavení cíle

Tato stránka popisuje, jak přepsat nebo propojit nastavení na nejvyšší úrovni s cílovým nastavením v balících prostředků Databricks. Informace o nastavení sady prostředků najdete v tématu Konfigurace sady prostředků Databricks.

Přepsání nastavení artefaktu

Nastavení artefaktů v mapování nejvyšší úrovně artifacts můžete přepsat mapováním artefaktů targets, například:

# ...
artifacts:
  <some-unique-programmatic-identifier-for-this-artifact>:
    # Artifact settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    artifacts:
      <the-matching-programmatic-identifier-for-this-artifact>:
        # Any more artifact settings to join with the settings from the
        # matching top-level artifacts mapping.

Pokud je v mapování nejvyšší úrovně artifacts i targets mapování pro stejný artefakt definováno jakékoli nastavení artefaktu, má nastavení v targets mapování přednost před nastavením v mapování nejvyšší úrovně artifacts .

Příklad 1: Nastavení artefaktů definovaná pouze v mapování artefaktů nejvyšší úrovně

Abychom si ukázali, jak to funguje v praxi, je v následujícím příkladu path definován v mapování nejvyšší úrovně artifacts , které definuje všechna nastavení artefaktu:

# ...
artifacts:
  my-artifact:
    type: whl
    path: ./my_package
# ...

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující:

{
  "...": "...",
  "artifacts": {
    "my-artifact": {
      "type": "whl",
      "path": "./my_package",
      "...": "..."
    }
  },
  "...": "..."
}

Příklad 2: Konfliktní nastavení artefaktů definovaná v několika mapováních artefaktů

V tomto příkladu je path definován jak v mapování nejvyšší úrovně, tak i v mapování artifacts v artifacts. V tomto příkladu má path v mapování artifacts v targets přednost před mapováním nejvyšší úrovně path s artifacts, aby se definovala nastavení artefaktu:

# ...
artifacts:
  my-artifact:
    type: whl
    path: ./my_package

targets:
  dev:
    artifacts:
      my-artifact:
        path: ./my_other_package
    # ...

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující:

{
  "...": "...",
  "artifacts": {
    "my-artifact": {
      "type": "whl",
      "path": "./my_other_package",
      "...": "..."
    }
  },
  "...": "..."
}

Překrytí nastavení clusteru

Můžete přepsat nebo sloučit nastavení úlohy nebo kanálu clusteru pro cíl.

Pro úlohy použijte job_cluster_key v definici úlohy k identifikaci nastavení clusteru úloh v mapování nejvyšší úrovně resources a spojte je s nastavením clusteru úloh v mapování targets.

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

Pokud je jakékoli nastavení clusteru definováno jak v mapování nejvyšší úrovně resources, tak v targets mapování pro stejnou job_cluster_key, má nastavení v mapování targets přednost před nastavením v nejvyšším mapování resources.

V případě deklarativních kanálů Sparku pro Lakeflow použijte label v nastavení clusteru v definici kanálu k identifikaci nastavení clusteru v mapování nejvyšší úrovně resources a k propojení s nastavením clusteru v mapování targets, například:

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

Pokud je jakékoli nastavení clusteru definováno jak v mapování nejvyšší úrovně resources, tak v targets mapování pro stejnou label, má nastavení v mapování targets přednost před nastavením v nejvyšším mapování resources.

Příklad 1: Nová nastavení clusteru úloh definovaná v několika mapováních prostředků a bez konfliktů nastavení

V tomto příkladu se spark_version v mapování nejvyšší úrovně resources kombinuje s node_type_id a num_workers v mapování resources v targets pro definici nastavení pro job_cluster_key pojmenovaný my-cluster:

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

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující:

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

Příklad 2: Konfliktní nastavení nového clusteru úloh definovaného v několika mapováních prostředků

V tomto příkladu jsou spark_version a num_workers definovány jak v mapování nejvyšší úrovně resources, tak v mapování resources v targets. V tomto příkladu mají spark_version a num_workers v mapování resources přednost před targets a spark_version v mapování nejvyšší úrovně num_workers, aby definovali nastavení pro resources pojmenovaný job_cluster_key.

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

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující:

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

Příklad 3: Nastavení clusteru pipeline definované v mapováních více zdrojů a bez konfliktů nastavení

V tomto příkladu se node_type_id v mapování nejvyšší úrovně resources zkombinuje s num_workers v mapování resources v targets, aby se definovala nastavení pro label s názvem default.

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

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující:

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

Příklad 4: Konfliktní nastavení clusteru datového kanálu definované v mapování prostředků

V tomto příkladu je num_workers definován jak v mapování nejvyšší úrovně, tak i v mapování resources v resources. num_workers v mapování resources má přednost před mapováním nejvyšší úrovně targets, aby se definovaly nastavení pro num_workers pojmenované resources:label

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

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující:

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

Změna nastavení úkolu

Mapování tasks v definici úlohy můžete použít k propojení nastavení úkolů úlohy v mapování nejvyšší úrovně resources s nastavením úkolů úlohy v targets mapování, například:

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

Pro propojení mapování na nejvyšší úrovni resources a targets pro stejný úkol, musí být task_key v mapování úkolů nastaveno na stejnou hodnotu.

Pokud je v mapování nejvyšší úrovně resources i v mapování targets pro stejný task definováno jakékoli nastavení úlohy, bude mít nastavení v mapování targets přednost před nastavením v mapování nejvyšší úrovně resources.

Příklad 1: Nastavení pracovního úkolu definované v několika mapováních zdrojů a bez konfliktů v nastavení

V tomto příkladu se spark_version v mapování nejvyšší úrovně resources kombinuje s node_type_id a num_workers v mapování resources v targets pro definici nastavení pro task_key pojmenovaný my-task:

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

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující (tři tečky označují vynechaný obsah pro stručnost):

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

Příklad 2: Nastavení konfliktních úkolů definovaných ve vícerém mapování zdrojů

V tomto příkladu jsou spark_version a num_workers definovány jak v mapování nejvyšší úrovně resources, tak v mapování resources v targets. spark_version a num_workers v mapování resources mají přednost před targets a spark_version v mapování nejvyšší úrovně num_workers. Tím se definuje nastavení pro task_key pojmenovaný my-task (tři tečky označují vynechaný obsah pro stručnost):

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

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující:

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