コンピュート ポリシー リファレンス
この記事は、コンピュートポリシーの定義に関する参考資料です。 記事には、使用可能なポリシー属性と制限の種類のリファレンスが含まれています。 一般的なユースケースで参照できるサンプル ポリシーもあります。
ポリシー定義とは何ですか?
ポリシー定義は、 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 要素との関係に基づいて、設定ごとに異なる場合があります。 ポリシーを使用してコンピュート権限を定義することはできません。
ポリシーを使用して、1 時間あたりの最大 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 の数を制御します。 |
|
ブーリアン |
プリエンプティブ VM インスタンスを使用してワーカーを起動できるようにするには、 |
|
string |
GCP ゾーン ID を制御します。 |
|
string |
非表示にすると、UI からワーカー ノード タイプの選択が削除されます。 |
|
省略可能な数値 |
非表示にすると、UI からワーカー番号の指定が削除されます。 |
|
string |
クラスターが Photon を使用するかどうかを決定します。 可能な値は |
|
string |
資格情報パススルーのシングル ユーザー アクセスのユーザー名。 |
|
オプションの文字列 |
コンフィギュレーション キー名を付加して、特定のコンフィギュレーション値を制御します。 たとえば、 |
|
オプションの文字列 |
環境変数を追加して、特定の Spark 環境変数値を制御します (例: |
|
string |
API (Databricks Runtime) を通じて指定された Spark イメージ バージョン名。 Databricks Runtime を動的に選択する特別なポリシー値を使用することもできます。 「Databricks Runtime 選択のための特別なポリシー値」を参照してください。 |
|
ブーリアン |
コンピュートリソースをジョブに使用できるかどうかを定義します。 「コンピュートをジョブで使用しないようにする」を参照してください。 |
|
ブーリアン |
コンピュートリソースをノートブックで使用できるかどうかを定義します。 「コンピュートをジョブで使用しないようにする」を参照してください。 |
仮想属性パス
この表には、ポリシーでサポートされる 2 つの追加の合成属性が含まれています。
属性パス |
タイプ |
説明 |
---|---|---|
|
数字 |
ドライバー ノードを含むリソースが 1 時間あたりに使用できる最大 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バージョンを変更するには、ユーザーがコンピュート を明示的に編集する必要があります。
サポートされているポリシーの種類
このセクションには、使用可能な各ポリシー タイプに関するリファレンスが含まれています。 ポリシーの種類には、固定ポリシーと制限ポリシーの 2 つのカテゴリがあります。
固定ポリシーにより、属性に対するユーザー構成が防止されます。 固定ポリシーには次の 2 つのタイプがあります。
制限ポリシーは、属性を構成するためのユーザーのオプションを制限します。 制限ポリシーを使用すると、デフォルト値を設定したり、属性をオプションにしたりすることもできます。 追加の制限ポリシー フィールドを参照してください。
ポリシーを制限するためのオプションは次のとおりです。
固定ポリシー
固定ポリシーは属性を指定された値に制限します。 数値とBoolean以外の属性値の場合、値は文字列で表されるか、文字列に変換可能である必要があります。
固定ポリシーでは、 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;
}
この例では、ユーザーが Databricks Runtime として7.3.x-scala2.12
を選択できないようにします。
{
"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 進数でなければなりません。 数値制限は、double 浮動小数点値として表現できる必要があります。 特定の制限がないことを示すには、 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" }
}
追加の制限ポリシーフィールド
ポリシー タイプを制限するには、次の 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": "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 が提供するポリシー ファミリを、一般的なポリシー使用ケースのテンプレートとして使用することもできます。
一般的なコンピュートポリシー
タグを要求し、インスタンスの最大数を制限し、タイムアウトを強制しながら、ユーザーをガイドし、一部の機能を制限することを目的とした汎用コンピュート ポリシー。
{
"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"
}
}
Delta Live Tablesの制限を定義するパイプライン コンピュート
注:
ポリシーを使用して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": "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
}
}
オートスケールポリシーを削除する
このポリシーはオートスケールを無効にし、ユーザーが指定された範囲内でワーカーの数を設定できるようにします。
{
"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" ]}}