共用方式為


覆寫 Databricks 資產包中的叢集設定

本文介紹如何在 Databricks 資產套件中覆寫 Azure Databricks 叢集的設定。 請參閱 什麼是 Databricks 資產套件組合?

在 Azure Databricks 套件組合組態檔中,您可以將叢集設定加入最上層 resources 對應中,並將叢集設定加入 targets 對應,如下所示。

針對作業,請使用作業定義內的 job_cluster_key 對應,將最上層 resources 對應中的叢集設定與 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.
          # ...

如果在最上層 resources 對應和相同 targetsjob_cluster_key 對應中同時定義了叢集設定,則 targets 對應中的設定將優先於最上層 resources 對應中的設定。

針對 Delta Live Tables 管線,使用管線定義中的 label 中的 cluster 對應,將最上層 resources 對應中的叢集設定與 targets 對應中的叢集設定聯結,例如(省略號表示省略內容,為簡潔起見):

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

如果在最上層 resources 對應和相同 targetslabel 對應中同時定義了叢集設定,則 targets 對應中的設定將優先於最上層 resources 對應中的設定。

範例 1:在多個資源對應中定義的新工作叢集設定,且沒有任何設定衝突。

在此範例中,頂層 spark_version 對應中的 resources 會與 node_type_idnum_workersresourcestargets 對應中結合,以定義名為 job_cluster_keymy-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
          # ...

當您針對此範例執行 databricks bundle validate 時,所產生的圖表如下(為簡明起見,省略部分內容):

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

範例 2:在多個資源對應中定義的新的工作叢集設定發生衝突

在此範例中,spark_versionnum_workers 都是在最上層 resources 對應和 resources中的 targets 對應中定義。 在此範例中,spark_versionnum_workers 映射中的 resourcestargets 優先於頂層 spark_version 映射中的 num_workersresources,這樣能夠定義名為 job_cluster_keymy-cluster 設定(省略內容以求簡潔):

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

當您針對此範例執行 databricks bundle validate 時,所產生的圖表如下(為簡明起見,省略部分內容):

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

範例 3:在多個資源對應中定義的管線叢集設定,且沒有任何設定衝突

在此範例中,位於最上層 node_type_id 對應中的 resourcesnum_workersresources 對應中的 targets 結合,以定義名稱為 labeldefault 的設定(省略的內容以省略號表示,為求簡潔):

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

當您針對此範例執行 databricks bundle validate 時,所產生的圖表如下(為簡明起見,省略部分內容):

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

範例 4:在多個資源對應中定義的管線叢集設定發生衝突

在此範例中,num_workers 定義於最上層 resources 對應和 resources中的 targets 對應中。 num_workersresources 對應中的 targets 優先於最上層 num_workers 對應中的 resources,以定義名為 labeldefault 的設定(省略的內容,為簡潔起見):

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

當您針對此範例執行 databricks bundle validate 時,所產生的圖表如下(為簡明起見,省略部分內容):

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