分享方式:


覆寫 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 對應和 targets 相同 job_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 對應和 targets 相同 label對應中定義任何叢集設定,則對應中的 targets 設定優先於最上層 resources 對應中的設定。

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

在此範例中,spark_version在最上層resources對應中會結合 node_type_idnum_workers 中的 resources 對應targets,以定義具名my-clusterjob_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

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。 在此範例中targetsresourcesspark_versionnum_workers 對應中,優先於 spark_versionnum_workers上層resources對應,以定義具名my-clusterjob_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
          # ...

當您針對此範例執行 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在最上層resources對應中會與 num_workers 中的resourcestargets對應結合,以定義具名defaultlabel設定(省略的省略內容,為簡潔起見):

# ...
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 中的對應中 targetsnum_workers在 對應resources中優先於num_workers最上層resources對應,以定義具名defaultlabel設定(省略號表示省略的內容,為targets簡潔起見):

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