計算原則參考
本文是計算原則定義的參考。 這些文章包含可用原則屬性和限制類型的參考。 您也可以參考常見使用案例的範例原則。
什麼是原則定義?
原則定義是 JSON 中表示的個別原則規則。 定義可以將規則新增至使用 叢集 API 控制的任何屬性。 例如,這些定義會設定預設的自動決定時間、禁止使用者使用集區,並強制使用 Photon:
{
"autotermination_minutes" : {
"type" : "unlimited",
"defaultValue" : 4320,
"isOptional" : true
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"runtime_engine": {
"type": "fixed",
"value": "PHOTON",
"hidden": true
}
}
每個屬性只能有一個限制。 屬性的路徑會反映 API 屬性名稱。 對於巢狀屬性,路徑會使用點串連巢狀屬性名稱。 原則定義中未定義的屬性不會受到限制。
支援的屬性
原則支援使用 叢集 API 控制的所有屬性。 您可以在屬性上放置的限制類型可能會根據其類型和與 UI 元素的關聯,而根據每個設定而有所不同。 您無法使用原則來定義計算許可權。
您也可以使用原則來設定每小時的最大 DBU 和叢集類型。 請參閱 虛擬屬性路徑。
下表列出支援的原則屬性路徑:
屬性路徑 | 類型 | 描述 |
---|---|---|
autoscale.max_workers |
選擇性數位 | 隱藏時,從UI移除最大背景工作編號欄位。 |
autoscale.min_workers |
選擇性數位 | 隱藏時,從UI移除最小背景工作編號欄位。 |
autotermination_minutes |
數值 | 值為 0 表示沒有自動終止。 隱藏時,從 UI 移除自動終止複選框和值輸入。 |
azure_attributes.availability |
字串 | 控制計算會使用隨選或現成實例 (ON_DEMAND_AZURE 或 SPOT_WITH_FALLBACK_AZURE )。 |
azure_attributes.first_on_demand |
數值 | 控制要放在隨選實例上的節點數目。 |
azure_attributes.spot_bid_max_price |
數值 | 控制 Azure 現成實例的最高價格。 |
cluster_log_conf.path |
字串 | 記錄檔的目的地 URL。 |
cluster_log_conf.type |
字串 | 記錄目的地的類型。 DBFS 是唯一可接受的值。 |
cluster_name |
字串 | 叢集名稱。 |
custom_tags.* |
字串 | 藉由附加標記名稱來控制特定標籤,例如: custom_tags.<mytag> 。 |
data_security_mode |
字串 | 設定叢集的存取模式。 Unity 目錄需要 SINGLE_USER 或 USER_ISOLATION (UI 中的共用存取模式)。 值 NONE 表示未啟用任何安全性功能。 |
docker_image.basic_auth.password |
字串 | Databricks Container Services 映射基本身份驗證的密碼。 |
docker_image.basic_auth.username |
字串 | Databricks Container Services 映射基本身份驗證的用戶名稱。 |
docker_image.url |
字串 | 控制 Databricks Container Services 映射 URL。 隱藏時,從 UI 移除 Databricks Container Services 區段。 |
driver_node_type_id |
選擇性字串 | 隱藏時,從 UI 移除驅動程式節點類型選取專案。 |
enable_local_disk_encryption |
boolean | 設定為 true 以啟用或 false 停用本機連結至叢集的磁碟(如 API 所指定)。 |
init_scripts.*.workspace.destination init_scripts.*.volumes.destination init_scripts.*.abfss.destination init_scripts.*.file.destination |
字串 | * 會參考屬性陣列中 init 腳本的索引。 請參閱 撰寫陣列屬性的原則。 |
instance_pool_id |
字串 | 如果 driver_instance_pool_id 也已定義,則控制背景工作節點所使用的集區,或針對所有叢集節點,否則為 。 如果您使用背景工作節點的集區,您也必須使用驅動程序節點的集區。 隱藏時,從UI移除集區選取範圍。 |
driver_instance_pool_id |
字串 | 如果指定,請為驅動程序節點設定不同於背景工作節點的集區。 如果未指定,則 instance_pool_id 繼承 。 如果您使用背景工作節點的集區,您也必須使用驅動程序節點的集區。 隱藏時,從 UI 移除驅動程式集區選取專案。 |
node_type_id |
字串 | 隱藏時,從 UI 移除背景工作節點類型選取專案。 |
num_workers |
選擇性數位 | 隱藏時,從UI移除背景工作編號規格。 |
runtime_engine |
字串 | 判斷叢集是否使用 Photon。 可能的值為 PHOTON 或 STANDARD 。 |
single_user_name |
字串 | 認證傳遞單一使用者存取的用戶名稱。 |
spark_conf.* |
選擇性字串 | 藉由附加組態索引鍵名稱控制特定組態值,例如: spark_conf.spark.executor.memory 。 |
spark_env_vars.* |
選擇性字串 | 藉由附加環境變數控制特定的Spark環境變數值,例如: spark_env_vars.<environment variable name> 。 |
spark_version |
字串 | 透過 API 指定的 Spark 映像版本名稱(Databricks Runtime)。 您也可以使用以動態方式選取 Databricks Runtime 的特殊原則值。 請參閱 Databricks 運行時間選取的特殊原則值。 |
workload_type.clients.jobs |
boolean | 定義計算資源是否可用於作業。 請參閱 防止計算與作業搭配使用。 |
workload_type.clients.notebooks |
boolean | 定義計算資源是否可與筆記本搭配使用。 請參閱 防止計算與作業搭配使用。 |
虛擬屬性路徑
下表包含原則支援的兩個額外綜合屬性:
屬性路徑 | 類型 | 描述 |
---|---|---|
dbus_per_hour |
數值 | 代表資源每小時可以使用的最大 DBU 的導出屬性,包括驅動程序節點。 此計量是控制個別計算層級成本的直接方式。 搭配範圍限制使用。 |
cluster_type |
字串 | 表示可以建立的叢集類型: * all-purpose 適用於 Azure Databricks 所有用途的計算* job 針對作業排程器所建立的作業計算* dlt 用於針對 Delta Live Tables 管線建立的計算允許或封鎖從原則建立的指定計算類型。 all-purpose 如果不允許此值,則原則不會顯示在所有用途的建立計算 UI 中。 job 如果不允許此值,則不會在建立作業計算 UI 中顯示原則。 |
Databricks 運行時間選取的特殊原則值
屬性 spark_version
支持根據目前支援的 Databricks Runtime 版本集合,動態對應至 Databricks Runtime 版本的特殊值。
下列值可用於 spark_version
屬性:
auto:latest
:地圖 至最新的 GA Databricks Runtime 版本。auto:latest-ml
:地圖 至最新的 Databricks Runtime ML 版本。auto:latest-lts
:地圖 至最新的長期支援 (LTS) Databricks Runtime 版本。auto:latest-lts-ml
:地圖 至最新的 LTS Databricks Runtime ML 版本。auto:prev-major
:地圖 至第二個最新的 GA Databricks Runtime 版本。 例如,如果auto:latest
是 14.2,則auto:prev-major
為 13.3。auto:prev-major-ml
:地圖 至第二個最新的 GA Databricks Runtime ML 版本。 例如,如果auto:latest
是 14.2,則auto:prev-major
為 13.3。auto:prev-lts
:地圖 至第二個最新的 LTS Databricks Runtime 版本。 例如,如果auto:latest-lts
是 13.3,則auto:prev-lts
為 12.2。auto:prev-lts-ml
:地圖 至第二個最新的 LTS Databricks Runtime ML 版本。 例如,如果auto:latest-lts
是 13.3,則auto:prev-lts
為 12.2。
注意
使用這些值並不會在發行新的運行時間版本時,進行計算自動更新。 用戶必須明確編輯 Databricks Runtime 版本的計算,才能變更。
支持的原則類型
本節包含每個可用原則類型的參考。 原則類型有兩種類別:固定原則和限制原則。
已修正原則可防止屬性上的用戶設定。 固定原則的兩種類型如下:
限制原則會限制用戶設定屬性的選項。 限制原則也可讓您設定預設值,並讓屬性成為選擇性。 請參閱 其他限制原則欄位。
限制原則的選項如下:
固定原則
已修正原則會將 屬性限制為指定的值。 對於數值和布爾值以外的屬性值,值必須以 或轉換成字串來表示。
使用固定原則時,您也可以將 字段設定 hidden
為 true
,以隱藏UI中的屬性。
interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}
此範例原則會修正 Databricks Runtime 版本,並將字段從使用者的 UI 中隱藏:
{
"spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}
禁止原則
禁止原則可防止用戶設定屬性。 禁止的原則只與選擇性屬性相容。
interface ForbiddenPolicy {
type: "forbidden";
}
此原則禁止將集區附加至背景工作節點的計算。 驅動程序節點也禁止集區,因為 driver_instance_pool_id
繼承原則。
{
"instance_pool_id": { "type": "forbidden" }
}
Allowlist 原則
allowlist 原則會指定使用者在設定屬性時可以選擇的值清單。
interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
此 allowlist 範例可讓使用者在兩個 Databricks Runtime 版本之間選取:
{
"spark_version": { "type": "allowlist", "values": [ "13.3.x-scala2.12", "12.2.x-scala2.12" ] }
}
封鎖清單原則
封鎖清單原則會列出不允許的值。 由於這些值必須完全相符,因此當屬性在如何表示值時,此原則可能無法如預期般運作(例如,允許前置和尾端空格)。
interface BlocklistPolicy {
type: "blocklist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
此範例會封鎖用戶選取 7.3.x-scala2.12
作為 Databricks Runtime。
{
"spark_version": { "type": "blocklist", "values": [ "7.3.x-scala2.12" ] }
}
Regex 原則
regex 原則會將可用的值限製為符合 regex 的值。 為了安全起因,請確定您的 regex 錨定在字串值的開頭和結尾。
interface RegexPolicy {
type: "regex";
pattern: string;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
此範例會限制使用者可以選取的 Databricks 執行時間版本:
{
"spark_version": { "type": "regex", "pattern": "13\\.[3456].*" }
}
範圍原則
範圍原則會使用 minValue
和 maxValue
欄位,將值限製為指定的範圍。 此值必須是十進位數。
數值限制必須以雙浮點值表示。 若要指出缺少特定限制,您可以省略 minValue
或 maxValue
。
interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
此範例會將背景工作角色數目上限限制為 10:
{
"num_workers": { "type": "range", "maxValue": 10 }
}
無限制原則
無限制的原則可用來讓屬性成為必要屬性,或在UI中設定預設值。
interface UnlimitedPolicy {
type: "unlimited";
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
此範例會將 COST_BUCKET
標籤新增至計算:
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}
若要設定 Spark 組態變數的預設值,但也允許省略 (移除) 它:
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}
其他限制原則欄位
若要限制原則類型,您可以指定兩個額外的欄位:
defaultValue
- 自動填入建立計算 UI 中的值。isOptional
- 屬性上的限制原則會自動使其成為必要專案。 若要將屬性設為選擇性,請將isOptional
欄位設定為true
。
注意
預設值不會自動套用至使用叢集 API 建立的計算。 若要使用 API 套用預設值,請將 參數 apply_policy_default_values
新增至計算定義,並將設定為 true
。
此範例原則會指定背景工作節點集區的預設值 id1
,但使其成為選擇性。 建立計算時,您可以選取不同的集區,或選擇不使用集區。 如果未 driver_instance_pool_id
在原則中定義,或在建立計算時,相同的集區會用於背景工作節點和驅動程序節點。
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
撰寫數位屬性的原則
您可以透過兩種方式指定數位屬性的原則:
- 所有陣列元素的泛型限制。 這些限制會在
*
原則路徑中使用通配符符號。 - 特定索引處陣列元素的特定限制。 這些限制會在路徑中使用數位。
例如,針對數位屬性 init_scripts
,泛型路徑會以 開頭 init_scripts.*
,而具有的特定路徑 init_scripts.<n>
,其中 <n>
是陣列中的整數索引(從 0 開始)。
您可以結合泛型和特定限制,在此情況下,泛型限制會套用至每個沒有特定限制的數位元素。 在每個案例中,只會套用一個原則限制。
下列各節顯示使用陣列屬性的常見範例範例。
需要包含特定專案
您不需要指定順序,就不需要特定值。 例如:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<required-script-2>"
}
}
需要整個清單的固定值
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
不允許完全使用
{
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
允許遵循特定限制的專案
{
"init_scripts.*.volumes.destination": {
"type": "regex",
"pattern": ".*<required-content>.*"
}
}
修正一組特定的init腳本
如果是 init_scripts
路徑,陣列可以包含多個結構之一,根據使用案例,所有可能的變體可能需要處理。 例如,若要要求一組特定的 init 腳本,並且不允許其他版本的任何變體,您可以使用下列模式:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.*.workspace.destination": {
"type": "forbidden"
},
"init_scripts.*.abfss.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
}
}
原則範例
本節包含原則範例,您可以用來作為建立您自己的原則的參考。 您也可以使用 Azure Databricks 提供 的原則系列 作為常見原則使用案例的範本。
一般計算原則
一般用途的計算原則旨在引導使用者並限制某些功能,同時需要標記、限制實例數目上限,以及強制執行逾時。
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "regex",
"pattern": "12\\.[0-9]+\\.x-scala.*"
},
"node_type_id": {
"type": "allowlist",
"values": [
"Standard_L4s",
"Standard_L8s",
"Standard_L16s"
],
"defaultValue": "Standard_L16s_v2"
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L16s_v2",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "range",
"maxValue": 25,
"defaultValue": 5
},
"autotermination_minutes": {
"type": "fixed",
"value": 30,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
定義差異實時數據表管線計算的限制
注意
使用原則設定 Delta Live Tables 計算時,Databricks 建議將單一原則套用至 default
和 maintenance
計算。
若要設定管線計算的原則,請建立原則, cluster_type
並將欄位設定為 dlt
。 下列範例會為 Delta Live Tables 計算建立最小原則:
{
"cluster_type": {
"type": "fixed",
"value": "dlt"
},
"num_workers": {
"type": "unlimited",
"defaultValue": 3,
"isOptional": true
},
"node_type_id": {
"type": "unlimited",
"isOptional": true
},
"spark_version": {
"type": "unlimited",
"hidden": true
}
}
簡單中型原則
允許使用者使用最少的組態來建立中型計算。 建立時間的唯一必要欄位是計算名稱;其餘部分已修正並隱藏。
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_conf.spark.databricks.cluster.profile": {
"type": "forbidden",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "fixed",
"value": 10,
"hidden": true
},
"autotermination_minutes": {
"type": "fixed",
"value": 60,
"hidden": true
},
"node_type_id": {
"type": "fixed",
"value": "Standard_L8s_v2",
"hidden": true
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L8s_v2",
"hidden": true
},
"spark_version": {
"type": "fixed",
"value": "auto:latest-ml",
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
僅限作業原則
允許使用者建立作業計算來執行作業。 用戶無法使用此原則來建立所有用途的計算。
{
"cluster_type": {
"type": "fixed",
"value": "job"
},
"dbus_per_hour": {
"type": "range",
"maxValue": 100
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"num_workers": {
"type": "range",
"minValue": 1
},
"node_type_id": {
"type": "regex",
"pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"driver_node_type_id": {
"type": "regex",
"pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-lts"
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
外部中繼存放區原則
允許使用者使用已附加管理員定義的中繼存放區來建立計算。 這很適合讓使用者建立自己的計算,而不需要額外的設定。
{
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL": {
"type": "fixed",
"value": "jdbc:sqlserver://<jdbc-url>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName": {
"type": "fixed",
"value": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
},
"spark_conf.spark.databricks.delta.preview.enabled": {
"type": "fixed",
"value": "true"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName": {
"type": "fixed",
"value": "<metastore-user>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword": {
"type": "fixed",
"value": "<metastore-password>"
}
}
防止計算與作業搭配使用
此原則可防止使用者使用計算來執行作業。 使用者只能搭配筆記本使用計算。
{
"workload_type.clients.notebooks": {
"type": "fixed",
"value": true
},
"workload_type.clients.jobs": {
"type": "fixed",
"value": false
}
}
拿掉自動調整原則
此原則會停用自動調整,並允許使用者設定指定範圍內的背景工作角色數目。
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}
自定義標籤強制執行
若要將計算標籤規則新增至原則,請使用 custom_tags.<tag-name>
屬性。
例如,使用此原則的任何使用者都必須以 9999、9921 或 9531 填入 COST_CENTER
標籤,才能啟動計算:
{"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應