コンピュート ポリシー リファレンス
この記事は、コンピュート ポリシーの定義のリファレンスです。 この記事には、使用可能なポリシー属性と制限タイプのリファレンスが含まれています。 また、一般的なユースケースで参照できるサンプルポリシーもあります。
ポリシー定義とは
ポリシー定義は、 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
}
}
属性ごとに指定できる制限は 1 つだけです。 属性のパスには、API 属性名が反映されます。 ネストされた属性の場合、パスはネストされた属性名をドットを使用して連結します。 ポリシー定義で定義されていない属性は制限されません。
サポートされている属性
ポリシーは、クラスター APIで制御されるすべての属性をサポートします。属性に適用できる制限の種類は、属性の種類と UI 要素との関係に基づいて、設定ごとに異なる場合があります。 ポリシーを使用してコンピュートの権限を定義することはできません。
また、ポリシーを使用して、時間あたりの最大 DBU とクラスターの種類を設定することもできます。 「仮想属性パス」を参照してください。
次の表に、サポートされているポリシー属性パスを示します。
属性パス | タイプ | 説明 |
---|---|---|
| オプション番号 | 非表示にすると、UI から最大ワーカー番号フィールドが削除されます。 |
| オプション番号 | 非表示にすると、UI から最小ワーカー番号フィールドが削除されます。 |
| 数字 | 値 0 は、自動終了なしを表します。 非表示にすると、自動終了チェックボックスと値入力が UI から削除されます。 |
| string | ログの保存先の種類。 |
| string | クラスター名。 |
| string | タグ名を追加することで、特定のタグ値を制御します (例: |
| string | クラスターのアクセス・モードを設定します。 Unity Catalog には、 |
| オプションの文字列 | 非表示にすると、ドライバー ノード タイプの選択が UI から削除されます。 |
| string |
|
| string | ワーカー ノードが使用するプールを制御します。( |
| string | 指定した場合、ドライバー ノードにはワーカー ノードとは異なるプールが構成されます。 指定しない場合、 は |
| string | GCP の可用性 (PREEMPTIBLE_GCP、PREEMPTIBLE_WITH_FALLBACK_GCP、または ON_DEMAND_GCP) を制御します。 |
| string | クラスターにアタッチされている GCP サービス アカウントを制御します。 |
| 数字 | クラスターの各ノードにアタッチされるローカル SSD の数を制御します。 |
| ブーリアン |
|
| string | GCP ゾーン ID を制御します。 |
| string | 非表示にすると、ワーカー ノード タイプの選択が UI から削除されます。 |
| オプション番号 | 非表示にすると、ワーカー番号の指定が UI から削除されます。 |
| string | クラスターで Photon を使用するかどうかを決定します。 可能な値は |
| string | コンピュート リソースに割り当てることができるユーザーまたはグループを制御します。 |
| オプションの文字列 | 特定の設定値を制御するには、設定キー名を追加します。 たとえば、 |
| オプションの文字列 | 環境変数を追加して、特定の Spark 環境変数の値を制御します (例: |
| string | で指定されたSpark イメージ バージョン名API Databricks Runtime()。また、 Databricks Runtimeを動的に選択する特別なポリシー値を使用することもできます。 「Databricks Runtime の選択に関する特別なポリシー値」を参照してください。 |
| ブーリアン | コンピュート リソースをジョブに使用できるかどうかを定義します。 「 コンピュートをジョブと一緒に使用しないようにする」を参照してください。 |
| ブーリアン | コンピュート リソースをノートブックで使用できるかどうかを定義します。 「 コンピュートをジョブと一緒に使用しないようにする」を参照してください。 |
仮想属性パス
この表には、ポリシーでサポートされる 2 つの追加の合成属性が含まれています。
属性パス | タイプ | 説明 |
---|---|---|
| 数字 | ドライバーノードを含む、リソースが時間単位で使用できる最大 DBU を表す計算属性。 このメトリクスは、個々のコンピュートレベルでコストを制御する直接的な方法です。 範囲制限付きで使用してください。 |
| string | 作成できるクラスターのタイプを表します。
ポリシーから指定した種類のコンピュートを作成できるようにするか、ブロックします。 |
Databricks Runtime の選択に関する特別なポリシー値
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
: 2 番目に新しい GA Databricks Runtime バージョンにマップされます。 たとえば、auto:latest
が 14.2 の場合、auto:prev-major
は 13.3 です。auto:prev-major-ml
: 2 番目に新しい GA Databricks Runtime ML バージョンにマップされます。 たとえば、auto:latest
が 14.2 の場合、auto:prev-major
は 13.3 です。auto:prev-lts
: 2 番目に新しい LTS Databricks Runtime バージョンにマップされます。 たとえば、auto:latest-lts
が 13.3 の場合、auto:prev-lts
は 12.2 です。auto:prev-lts-ml
: 2 番目に新しい LTS Databricks Runtime ML バージョンにマップされます。 たとえば、auto:latest-lts
が 13.3 の場合、auto:prev-lts
は 12.2 です。
これらの値を使用しても、新しいランタイム バージョンがリリースされたときにコンピュートは自動更新されません。 ユーザーは、 Databricks Runtime バージョンを変更するためにコンピュートを明示的に編集する必要があります。
サポートされているポリシーの種類
このセクションには、使用可能な各ポリシータイプのリファレンスが含まれています。 ポリシーの種類には、fixed ポリシーと制限ポリシーの 2 つのカテゴリがあります。
固定ポリシーは、属性に対するユーザー構成を防止します。 固定ポリシーには、次の 2 種類があります。
制限ポリシーは、属性を構成するためのユーザーのオプションを制限します。 制限ポリシーでは、デフォルト値を設定し、属性をオプションにすることもできます。 追加の制限ポリシー・フィールドを参照してください。
ポリシーを制限するためのオプションは次のとおりです。
固定ポリシー
固定ポリシーは、属性を指定された値に制限します。 数値とブール値以外の属性値の場合、値は文字列で表すか、文字列に変換可能である必要があります。
固定ポリシーでは、 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";
}
このポリシーは、コンピュートにプールを取り付けることを禁じています。
{
"instance_pool_id": { "type": "forbidden" }
}
許可リストポリシー
許可リストポリシーは、属性の設定時にユーザーが選択できる値のリストを指定します。
interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
この許可リストの例では、ユーザーは 2 つの 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"] }
}
正規表現ポリシー
正規表現ポリシーは、使用可能な値を正規表現に一致する値に制限します。 安全のため、正規表現が文字列値の先頭と末尾に固定されていることを確認してください。
interface RegexPolicy {
type: "regex";
pattern: string;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
この例では、ユーザーが選択できる Databricks Runtime バージョンを制限します。
{
"spark_version": { "type": "regex", "pattern": "13\\.[3456].*" }
}
範囲ポリシー
範囲ポリシーは、 minValue
フィールドと maxValue
フィールドを使用して、値を指定された範囲に制限します。 値は 10 進数である必要があります。数値の制限は、倍精度浮動小数点値として表現できる必要があります。 特定の制限がないことを示すために、 minValue
または maxValue
を省略できます。
interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
この例では、ワーカーの最大数を 10 に制限します。
{
"num_workers": { "type": "range", "maxValue": 10 }
}
無制限のポリシー
unlimited ポリシーは、属性を必須にしたり、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" }
}
追加の制限ポリシーフィールド
ポリシーの種類を制限するには、次の 2 つの追加フィールドを指定できます。
defaultValue
- コンピュート UI の作成で自動的に入力される値。isOptional
- 属性に対する制限ポリシーにより、自動的に必須になります。 属性をオプションにするには、isOptional
フィールドをtrue
に設定します。
デフォルト の値は、 クラスター APIで作成されたコンピュートに自動的に適用されません。 APIを使用してデフォルト値を適用するには、パラメーター を apply_policy_default_values
コンピュート定義に追加して true
に設定します。
このポリシー例では、プールのデフォルト値 ( id1
) を指定していますが、オプションにしています。 コンピュートを作成するときは、別のプールを選択するか、使用しないかを選択できます。
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
配列属性のポリシーの記述
配列属性のポリシーは、次の 2 つの方法で指定できます。
- すべての配列要素に対する一般的な制限。 これらの制限では、ポリシー パスで
*
ワイルドカード記号が使用されます。 - 特定のインデックスの配列要素に対する特定の制限。 これらの制限では、パスに番号が使用されます。
たとえば、配列属性 init_scripts
の場合、汎用パスは init_scripts.*
と
init_scripts.<n>
を持つ特定のパス ( <n>
は配列内の整数インデックス (0 から始まる) です。汎用制限と特定の制限を組み合わせることができ、その場合、汎用制限は以下に適用されます
特定の制限がない各配列要素。 いずれの場合も、1 つのポリシー制限のみが適用されます。
次のセクションでは、配列属性を使用する一般的な例の例を示します。
インクルージョン固有のエントリが必要
順序を指定せずに特定の値を必須にすることはできません。 例えば:
{
"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
パスの場合、配列には複数の構造体の1つを含めることができ、ユースケースに応じてすべての可能なバリアントを処理する必要があります。たとえば、特定の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.*.gcs.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
}
}
ポリシーの例
このセクションには、独自のポリシーを作成するための参照として使用できるポリシーの例が含まれています。 また、Databricks が提供する ポリシー ファミリ を、一般的なポリシーのユース ケースのテンプレートとして使用することもできます。
- General コンピュート ポリシー
- Define limits on DLT パイプライン コンピュート
- Simple mediumsized ポリシー
- ジョブ専用ポリシー
- 外部メタストア ポリシー
- ジョブと一緒にコンピュートが使われないようにする
- Remove オートスケール ポリシー
- カスタムタグの適用
General コンピュート ポリシー
汎用のコンピュート ポリシーは、ユーザーをガイドし、一部の機能を制限することを目的としていますが、タグを要求し、インスタンスの最大数を制限し、タイムアウトを強制します。
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "regex",
"pattern": "12\\.[0-9]+\\.x-scala.*"
},
"node_type_id": {
"type": "allowlist",
"values": ["n2-highmem-4", "n2-highmem-8", "n2-highmem-16"],
"defaultValue": "n2-highmem-4"
},
"driver_node_type_id": {
"type": "fixed",
"value": "n2-highmem-8",
"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"
}
}
Define limits on DLT パイプライン コンピュート
ポリシーを使用して DLT コンピュートを設定する場合、 Databricks default
と maintenance
コンピュートの両方に 1 つのポリシーを適用することをお勧めします。
パイプライン コンピュートのポリシー を設定するには、 cluster_type
フィールドを dlt
に設定したポリシーを作成します。 次の例では、DLT コンピュートの最小限のポリシーを作成します。
{
"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
}
}
Simple mediumsized ポリシー
ユーザーは最小限の構成で中型のコンピュートを作成できます。 作成時に必須となるフィールドは コンピュート name のみです。残りは固定され、非表示になります。
{
"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": "n2-highmem-4",
"hidden": true
},
"driver_node_type_id": {
"type": "fixed",
"value": "i3.xlarge",
"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": "[na][1-2]d?-(?:standard|highmem)-[0-96]"
},
"driver_node_type_id": {
"type": "regex",
"pattern": "[na][1-2]d?-(?:standard|highmem)-[0-96]"
},
"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
}
}
Remove オートスケール ポリシー
このポリシーは、オートスケールを無効にし、ユーザーが特定の範囲内のワーカーの数を設定できるようにします。
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}
カスタムタグの適用
コンピュート・タグ・ルールをポリシーに追加するには、 custom_tags.<tag-name>
属性を使用します。
たとえば、このポリシーを使用するユーザーは、コンピュートを起動するために、 COST_CENTER
タグに 9999、9921、または 9531 を入力する必要があります。
{ "custom_tags.COST_CENTER": { "type": "allowlist", "values": ["9999", "9921", "9531"] } }