Delen via


Overschrijven met doelconfiguraties

Op deze pagina wordt beschreven hoe u instellingen op het hoogste niveau overschrijft of koppelt aan doelinstellingen in Databricks Asset Bundles. Zie de configuratie van Databricks Asset Bundle voor informatie over bundelinstellingen.

Artefactinstellingen negeren

U kunt de artefactinstellingen in een bovenliggende artifacts toewijzing overschrijven met de artefactinstellingen in een targets toewijzing, bijvoorbeeld:

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

Als er een artefactinstelling is gedefinieerd in zowel de toewijzing op het hoogste niveau artifacts als de targets toewijzing voor hetzelfde artefact, heeft de instelling in de targets toewijzing voorrang op de instelling in de toewijzing op het hoogste niveau artifacts .

Voorbeeld 1: Artefactinstellingen die alleen zijn gedefinieerd in de koppeling van artefacten op het hoogste niveau

Om te laten zien hoe dit in de praktijk werkt, wordt in het onderstaande voorbeeld path gedefinieerd in de bovenniveau toewijzing artifacts, waarmee alle instellingen voor het artefact worden gedefinieerd.

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

Wanneer u voor dit voorbeeld uitvoert databricks bundle validate , is de resulterende grafiek:

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

Voorbeeld 2: Conflicterende artefactinstellingen gedefinieerd in meerdere artefacttoewijzingen

In dit voorbeeld is path zowel gedefinieerd in de top-level artifacts mapping als in de artifacts mapping in targets. In dit voorbeeld krijgt path in de artifacts mapping targets voorrang boven path in de top-level artifacts mapping, om de instellingen voor het artefact te definiëren:

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

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

Wanneer u voor dit voorbeeld uitvoert databricks bundle validate , is de resulterende grafiek:

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

Clusterinstellingen overschrijven

U kunt de taak- of pijplijnclusterinstellingen voor een doel overschrijven of eraan koppelen.

Gebruik job_cluster_key binnen een taakdefinitie om taakclusterinstellingen in een topniveautoewijzing resources te identificeren en te koppelen aan taakclusterinstellingen in een targets toewijzing.

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

Als een clusterinstelling zowel in de toewijzing op het hoogste niveau resources als in de targets toewijzing voor hetzelfde job_cluster_key is gedefinieerd, heeft de instelling in de targets toewijzing voorrang op de instelling in de toewijzing op het hoogste niveau resources.

Gebruik voor Lakeflow Spark-declaratieve pijplijnen label in de clusterinstellingen van een pijplijndefinitie om clusterinstellingen te identificeren in een toewijzing op het hoogste niveau resources om deel te nemen aan de clusterinstellingen in een targets toewijzing, bijvoorbeeld:

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

Als een clusterinstelling zowel in de toewijzing op het hoogste niveau resources als in de targets toewijzing voor hetzelfde label is gedefinieerd, heeft de instelling in de targets toewijzing voorrang op de instelling in de toewijzing op het hoogste niveau resources.

Voorbeeld 1: Nieuwe taakclusterinstellingen gedefinieerd in meerdere resourcetoewijzingen en zonder instellingenconflicten

In dit voorbeeld wordt spark_version in de toewijzing op het hoogste niveau resources gecombineerd met node_type_id en num_workers in de toewijzing resources binnen targets om de instellingen te definiëren voor de job_cluster_key genaamd 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
          # ...

Wanneer u databricks bundle validate voor dit voorbeeld uitvoert, ziet de resulterende grafiek er als volgt uit:

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

Voorbeeld 2: Conflicterende instellingen voor nieuwe jobclusters gedefinieerd in meerdere resource mappings

In dit voorbeeld, spark_versionnum_workers worden zowel in de mapping op het hoogste niveau resources als in de resources mapping in targets. In dit voorbeeld hebben spark_version en num_workers in de resources-mapping voorrang boven targets en spark_version in de mapping op het hoogste niveau num_workers, om de instellingen voor resources, genaamd job_cluster_key, te definiëren.

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

Wanneer u databricks bundle validate voor dit voorbeeld uitvoert, ziet de resulterende grafiek er als volgt uit:

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

Voorbeeld 3: Instellingen voor pijplijnclusters die zijn gedefinieerd in meerdere resourcetoewijzingen en zonder instellingenconflicten

In dit voorbeeld wordt node_type_id in de toewijzing op het hoogste niveau resources gecombineerd met num_workers in de resources toewijzing in targets om de instellingen voor de label genaamd default te definiëren:

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

Wanneer u databricks bundle validate voor dit voorbeeld uitvoert, ziet de resulterende grafiek er als volgt uit:

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

Voorbeeld 4: Conflicterende pijplijnclusterinstellingen gedefinieerd in meerdere resourcetoewijzingen

In dit voorbeeld is num_workers zowel gedefinieerd in de top-level resources mapping als in de resources mapping in targets. num_workers in de resources toewijzing in targets hebben voorrang boven num_workers in de toewijzing op het hoogste niveau resources om de instellingen te definiëren voor de label genaamd default.

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

Wanneer u databricks bundle validate voor dit voorbeeld uitvoert, ziet de resulterende grafiek er als volgt uit:

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

Taakinstellingen overschrijven

U kunt de tasks mapping in een taakdefinitie gebruiken om de taakinstellingen te koppelen aan de instellingen van de hoofdmapping resources met de taakinstellingen in een targets mapping, bijvoorbeeld:

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

Als u de toewijzing op het hoogste niveau resources en de targets toewijzing voor dezelfde taak wilt koppelen, moeten de taaktoewijzingen task_key worden ingesteld op dezelfde waarde.

Als een taakinstelling zowel is gedefinieerd in de toewijzing op het hoogste niveau als in de resources toewijzing voor hetzelfde targets, dan heeft de instelling in de task toewijzing voorrang op de instelling in de toewijzing op het hoogste niveau targetsresources.

Voorbeeld 1: Taaktaakinstellingen gedefinieerd in meerdere resourcetoewijzingen en zonder instellingenconflicten

In dit voorbeeld wordt spark_version in de toewijzing op het hoogste niveau resources gecombineerd met node_type_id en num_workers in de toewijzing resources binnen targets om de instellingen te definiëren voor de task_key genaamd 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
          # ...

Wanneer u voor dit voorbeeld uitvoert databricks bundle validate , ziet de resulterende grafiek er als volgt uit (weglatingstekens geven de weggelaten inhoud aan, ter beknoptheid):

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

Voorbeeld 2: Conflicterende taakinstellingen gedefinieerd in meerdere resource-mapping.

In dit voorbeeld, spark_versionnum_workers worden zowel in de mapping op het hoogste niveau resources als in de resources mapping in targets. spark_version en num_workers in de resources-toewijzing in targets hebben voorrang op spark_version en num_workers in de toewijzing op het hoogste niveau resources. nl-NL: Hiermee definieert u de instellingen voor het task_key genaamd my-task (weglatingstekens geven aan dat inhoud weggelaten is voor de beknoptheid).

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

Wanneer u databricks bundle validate voor dit voorbeeld uitvoert, ziet de resulterende grafiek er als volgt uit:

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