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 de clusterinstellingen in een topniveau resources-toewijzing koppelen met de clusterinstellingen in een targets-toewijzing, als volgt.

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 (de puntjes geven weggelaten inhoud aan, voor de leesbaarheid):

# ...
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 samen te voegen in een resources-toewijzing op het hoogste niveau met de clusterinstellingen in een targets-toewijzing, bijvoorbeeld (weglatingstekens geven inhoud aan, 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 is gedefinieerd in zowel de resources toewijzing op het hoogste niveau als de targets toewijzing voor dezelfde label, dan heeft de instelling in de targets toewijzing voorrang boven de instelling in de resources toewijzing op het hoogste niveau.

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