Delen via


Clusterinstellingen overschrijven in Databricks Asset Bundles

In dit artikel wordt beschreven hoe u de instellingen voor Azure Databricks-clusters in Databricks Asset Bundlesoverschrijft. Zie Wat zijn Databricks-assetbundels?

In Azure Databricks bundelconfiguratiebestandenkunt u als volgt de clusterinstellingen koppelen aan een resources toewijzing op het hoogste niveau met de clusterinstellingen in een targets-toewijzing.

Voor taken gebruikt u de job_cluster_key-toewijzing binnen een taakdefinitie om de clusterinstellingen in een resources-toewijzing op het hoogste niveau te koppelen met de clusterinstellingen in een targets-toewijzing. Bijvoorbeeld: (weggevallen inhoud wordt aangegeven met puntjes, voor de duidelijkheid).

# ...
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 dezelfde job_cluster_keyis gedefinieerd, heeft de instelling in de targets-toewijzing voorrang boven de instelling in de toewijzing op het hoogste niveau resources.

Voor Delta Live Tables-pijplijnen gebruikt u de label-toewijzing binnen de cluster van een pijplijndefinitie om de clusterinstellingen te verbinden in een resources-toewijzing op het hoogste niveau met de clusterinstellingen in een targets-toewijzing, bijvoorbeeld (met weglatingstekens voor beknoptheid):

# ...
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 dezelfde labelis gedefinieerd, heeft de instelling in de targets-toewijzing voorrang boven 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 van resources in targets om de instellingen voor de benoemde job_cluster_keymy-cluster te definiëren (weglatingstekens duiden op het weglaten van inhoud, voor beknoptheid).

# ...
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 (weglatingstekens geven de weggelaten inhoud aan, ter beknoptheid):

{
  "...": "...",
  "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 nieuwe taakclusterinstellingen gedefinieerd in meerdere resourcetoewijzingen

In dit voorbeeld worden spark_versionen num_workers zowel gedefinieerd in de toewijzing op het hoogste niveau van resources als in de resources-toewijzing in targets. In dit voorbeeld hebben spark_version en num_workers in de toewijzing van resources in targets voorrang op spark_version en num_workers in de toewijzing op het hoogste niveau resources om de instellingen voor de job_cluster_key met de naam my-cluster te definiëren (weglatingstekens geven weggelaten inhoud aan voor beknoptheid):

# ...
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 (weglatingstekens geven de weggelaten inhoud aan, ter beknoptheid):

{
  "...": "...",
  "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 met de naam default te definiëren (weglatingstekens geven inhoud aan, voor beknoptheid):

# ...
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 (weglatingstekens geven de weggelaten inhoud aan, ter beknoptheid):

{
  "...": "...",
  "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 wordt num_workers zowel gedefinieerd in de toewijzing op het hoogste niveau resources als in de toewijzing resources in targets. num_workers in de resources-toewijzing in targets hebben voorrang op num_workers in de resources-toewijzing op het hoogste niveau, om de instellingen te definiëren voor de label met de naam default (weglatingstekens geven inhoud aan, ter beknoptheid):

# ...
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 (weglatingstekens geven de weggelaten inhoud aan, ter beknoptheid):

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