覆寫 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_id
和 num_workers
在 resources
的 targets
對應中結合,以定義名為 job_cluster_key
的 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
# ...
當您針對此範例執行 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_version
和 num_workers
都是在最上層 resources
對應和 resources
中的 targets
對應中定義。 在此範例中,spark_version
中 num_workers
映射中的 resources
和 targets
優先於頂層 spark_version
映射中的 num_workers
和 resources
,這樣能夠定義名為 job_cluster_key
的 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
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
內 resources
對應中的 targets
結合,以定義名稱為 label
的 default
的設定(省略的內容以省略號表示,為求簡潔):
# ...
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_workers
中 resources
對應中的 targets
優先於最上層 num_workers
對應中的 resources
,以定義名為 label
之 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
# ...
當您針對此範例執行 databricks bundle validate
時,所產生的圖表如下(為簡明起見,省略部分內容):
{
"...": "...",
"resources": {
"pipelines": {
"my-pipeline": {
"clusters": [
{
"label": "default",
"node_type_id": "Standard_DS3_v2",
"num_workers": 2
}
],
"...": "..."
}
}
}
}