共用方式為


計算原則參考

本文是計算原則定義的參考。 這些文章包含可用原則屬性和限制類型的參考資料。 您也可以參考常見使用案例的範例原則。

什麼是原則定義?

原則定義是 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 可選數字 隱藏時,從使用者介面移除最小工作人員數量欄位。
autotermination_minutes 數字 值為 0 表示沒有自動終止。 隱藏時,從 UI 中移除自動終止的複選框和值輸入選項。
azure_attributes.availability 字串 控制計算會使用隨選或現成實例(ON_DEMAND_AZURESPOT_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_USERUSER_ISOLATION(UI 中的共用存取模式)。 NONE 值表示未啟用任何安全性功能。
docker_image.basic_auth.password 字串 Databricks Container Services 映像基本身份驗證的密碼。
docker_image.basic_auth.username 字串 Databricks 容器服務映像檔基礎身份驗證的使用者名稱。
docker_image.url 字串 控制 Databricks Container Services 的映像 URL。 隱藏時,從 UI 移除 Databricks Container Services 區段。
driver_node_type_id 選擇性字串 當隱藏時,從 UI 中移除驅動程式節點類型選項。
enable_local_disk_encryption 布爾 設為 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 選填的數字 隱藏時,從使用者介面移除工作人員編號顯示。
runtime_engine 字串 判斷叢集是否使用 Photon。 可能的值為 PHOTONSTANDARD
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 布爾 定義計算資源是否可用於作業。 請參閱 ,防止運算資源被用於作業
workload_type.clients.notebooks 布爾 定義計算資源是否可與筆記本搭配使用。 請參閱 防止計算與作業搭配使用

虛擬屬性路徑

下表包含原則支援的兩個額外綜合屬性:

屬性路徑 類型 描述
dbus_per_hour 數字 計算出的屬性代表資源每小時可以使用的最大 DBU,包括驅動節點。 此計量是控制個別計算層級成本的直接方式。 限制範圍使用。
cluster_type 字串 表示可以建立的叢集類型:

適用於 Azure Databricks 全用途計算的 - all-purpose
- job 作業排程器所建立的作業計算
針對 Delta Live Tables 管線建立的計算 - dlt

允許或封鎖從原則建立的指定計算類型。 如果不允許 all-purpose 值,則原則不會顯示在通用建立計算介面中。 如果不允許 job 值,則政策將不會顯示在建立工作計算介面中。

Databricks 執行時間環境選擇的特殊策略值

spark_version 屬性支持一組特殊值,此值會根據當前支援的 Databricks Runtime 版本集合動態對應至相應的 Databricks Runtime 版本。

下列值可用於 spark_version 屬性:

  • auto:latest:對應至最新的 GA Databricks 執行環境版本。
  • 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 原則會指定使用者在設定屬性時可以選擇的值清單。

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

範圍原則

範圍原則會使用 minValuemaxValue 欄位,將值限製為指定的範圍。 此值必須是十進位數。 數值限制必須以雙浮點值表示。 若要指出缺少特定限制,您可以省略 minValuemaxValue

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_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 流水線計算資源的限制

注意

使用原則來設定 Delta Live Tables 計算時,Databricks 建議將單一原則套用至 defaultmaintenance 計算。

若要設定管線計算的原則,請建立原則,並將 [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" ]}}