Referens för beräkningspolicy
Den här artikeln är en referens för definitioner av beräkningsprinciper. Artiklarna innehåller en referens till tillgängliga principattribut och begränsningstyper. Det finns också exempelprinciper som du kan referera till för vanliga användningsfall.
Vad är principdefinitioner?
Principdefinitioner är enskilda principregler som uttrycks i JSON. En definition kan lägga till en regel i något av de attribut som styrs med API:et Clusters. Dessa definitioner anger till exempel en standardtid för autoterminering, förbjuder användare från att använda pooler och framtvingar användningen av Photon:
{
"autotermination_minutes" : {
"type" : "unlimited",
"defaultValue" : 4320,
"isOptional" : true
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"runtime_engine": {
"type": "fixed",
"value": "PHOTON",
"hidden": true
}
}
Det kan bara finnas en begränsning per attribut. Ett attributs sökväg återspeglar API-attributnamnet. För kapslade attribut sammanfogar sökvägen de kapslade attributnamnen med hjälp av punkter. Attribut som inte definieras i en principdefinition begränsas inte.
attribut som stöds
Principer stöder alla attribut som kontrolleras med Clusters API . Vilken typ av begränsningar du kan använda för attribut kan variera beroende på typ och relation till användargränssnittselementen. Du kan inte använda principer för att definiera beräkningsbehörigheter.
Du kan också använda principer för att ange maximalt antal DPU:er per timme och klustertyp. Se virtuella attributssökvägar för .
I följande tabell visas sökvägarna för principattribut som stöds:
Attributsökväg | Typ | Beskrivning |
---|---|---|
autoscale.max_workers |
valfritt nummer | När det är dolt tar du bort fältet maximalt arbetsnummer från användargränssnittet. |
autoscale.min_workers |
valfritt nummer | När det är dolt tar du bort fältet minsta arbetsnummer från användargränssnittet. |
autotermination_minutes |
nummer | Värdet 0 representerar ingen automatisk avslutning. När den är dold tar du bort kryssrutan för automatisk avslutning och värdeindata från användargränssnittet. |
azure_attributes.availability |
sträng | Kontrollerar att beräkningsanvändningen använder instanser på begäran eller spot-instanser (ON_DEMAND_AZURE eller SPOT_WITH_FALLBACK_AZURE ). |
azure_attributes.first_on_demand |
nummer | Styr antalet noder som ska placeras på efterfrågeinstanser. |
azure_attributes.spot_bid_max_price |
nummer | Styr det maximala priset för Azure Spot-instanser. |
cluster_log_conf.path |
sträng | Mål-URL:en för loggfilerna. |
cluster_log_conf.type |
sträng | Typ av loggdestination.
DBFS är det enda godtagbara värdet. |
cluster_name |
sträng | Klusternamnet. |
custom_tags.* |
sträng | Kontrollera specifika taggvärden genom att lägga till taggnamnet, till exempel: custom_tags.<mytag> . |
data_security_mode |
sträng | Anger åtkomstläget för klustret. Unity Catalog kräver SINGLE_USER eller USER_ISOLATION (läget för delad åtkomst i användargränssnittet). Värdet NONE innebär att inga säkerhetsfunktioner är aktiverade. |
docker_image.basic_auth.password |
sträng | Lösenordet för grundläggande autentisering för Databricks Container Services-avbildningen. |
docker_image.basic_auth.username |
sträng | Användarnamnet för grundläggande autentisering för Databricks Container Services-avbildningen. |
docker_image.url |
sträng | Styr avbildnings-URL:en för Databricks Container Services. När det är dolt tar du bort avsnittet Databricks Container Services från användargränssnittet. |
driver_node_type_id |
valfri sträng | När den är dold tar du bort valet av drivrutinsnodtyp från användargränssnittet. |
enable_local_disk_encryption |
boolesk | Ställ in på true för att aktivera, eller false att inaktivera, kryptera diskar som är lokalt anslutna till klustret (som anges via API:et). |
init_scripts.*.workspace.destination
init_scripts.*.volumes.destination
init_scripts.*.abfss.destination
init_scripts.*.file.destination
|
sträng |
* refererar till indexet för init-skriptet i attributmatrisen. Se Principer för att skriva matrisattribut. |
instance_pool_id |
sträng | Styr poolen som används av arbetsnoder om driver_instance_pool_id också har definierats eller för alla klusternoder annars. Om du använder pooler för arbetsnoder måste du också använda pooler för drivrutinsnoden. När det är dolt tar du bort valet av pool från användargränssnittet. |
driver_instance_pool_id |
sträng | Om det anges konfigureras en annan pool för drivrutinsnoden än för arbetsnoder. Om det inte anges ärver instance_pool_id . Om du använder pooler för arbetsnoder måste du också använda pooler för drivrutinsnoden. När den är dold tar du bort valet av drivrutinspool från användargränssnittet. |
node_type_id |
sträng | När den är dold tar du bort valet av arbetsnodtyp från användargränssnittet. |
num_workers |
valfritt nummer | När det är dolt tar du bort specifikationen för arbetsnummer från användargränssnittet. |
runtime_engine |
sträng | Avgör om klustret använder Photon eller inte. Möjliga värden är PHOTON eller STANDARD . |
single_user_name |
sträng | Styr vilka användare eller grupper som kan tilldelas till beräkningsresursen. |
spark_conf.* |
valfri sträng | Styr specifika konfigurationsvärden genom att lägga till konfigurationsnyckelns namn, till exempel: spark_conf.spark.executor.memory . |
spark_env_vars.* |
valfri sträng | Styr specifika värden för Spark-miljövariabler genom att lägga till miljövariabeln, till exempel: spark_env_vars.<environment variable name> . |
spark_version |
sträng | Namnet på Spark-bildversionen som anges genom API:et (Databricks Runtime). Du kan också använda särskilda principvärden som dynamiskt väljer Databricks Runtime. Se Särskilda principvärden för Databricks Runtime-val. |
workload_type.clients.jobs |
boolesk | Definierar om beräkningsresursen kan användas för jobb. Se för att förhindra att beräkningar används med jobb. |
workload_type.clients.notebooks |
boolesk | Definierar om beräkningsresursen kan användas med notebook-filer. Se Förhindra att beräkning används med jobb. |
Sökvägar för virtuella attribut
Den här tabellen innehåller ytterligare två syntetiska attribut som stöds av principer:
Attributsökväg | Typ | Beskrivning |
---|---|---|
dbus_per_hour |
nummer | Beräknat attribut som representerar maximalt antal DBUs som en resurs kan använda varje timme, inklusive drivrutinsnoden. Det här måttet är ett direkt sätt att styra kostnaden på den enskilda beräkningsnivån. Använd med intervallbegränsning. |
cluster_type |
sträng | Representerar den typ av kluster som kan skapas: - all-purpose för allmän beräkning i Azure Databricks- job för beräkning av jobb som skapats av jobbplaneraren- dlt för beräkning som skapats för Delta Live Tables-pipelinesTillåt eller blockera angivna typer av beräkning som ska skapas från principen. Om värdet för all-purpose inte tillåts visas inte principen i användargränssnittet för att skapa beräkning för alla syften. Om värdet job inte tillåts visas inte policyn i användargränssnittet för att skapa beräkningsjobb. |
Särskilda principvärden för Val av Databricks Runtime
Attributet spark_version
stöder specialvärden som dynamiskt mappas till en Databricks Runtime-version baserat på den aktuella uppsättningen Databricks Runtime-versioner som stöds.
Följande värden kan användas i attributet spark_version
:
-
auto:latest
: Mappar till den senaste GA Databricks Runtime-versionen. -
auto:latest-ml
: Mappar till den senaste Databricks Runtime ML-versionen. -
auto:latest-lts
: Mappar till den senaste versionen av LTS Databricks Runtime.auto:latest-lts
: Maps to the latest long-term support (LTS) Databricks Runtime version. -
auto:latest-lts-ml
: Mappar till den senaste LTS Databricks Runtime ML-versionen. -
auto:prev-major
: Mappar till den näst senaste GA Databricks Runtime-versionen. Omauto:latest
till exempel är 14,2 ärauto:prev-major
13,3. -
auto:prev-major-ml
: Mappar till den näst senaste GA Databricks Runtime ML-versionen. Omauto:latest
till exempel är 14,2 ärauto:prev-major
13,3. -
auto:prev-lts
: Mappar till den näst senaste LTS Databricks Runtime-versionen. Omauto:latest-lts
till exempel är 13,3 ärauto:prev-lts
12,2. -
auto:prev-lts-ml
: Mappar till den näst senaste LTS Databricks Runtime ML-versionen. Omauto:latest-lts
till exempel är 13,3 ärauto:prev-lts
12,2.
Not
Om du använder dessa värden medför det inte att beräkningen uppdateras automatiskt när en ny körningsversion släpps. En användare måste uttryckligen redigera beräkningen för att Databricks Runtime-versionen ska ändras.
Principtyper som stöds
Det här avsnittet innehåller en referens för var och en av de tillgängliga principtyperna. Det finns två kategorier av principtyper: fasta principer och begränsande principer.
Fasta principer förhindrar användarkonfiguration för ett attribut. De två typerna av fasta principer är:
Begränsning av principer begränsar en användares alternativ för att konfigurera ett attribut. Genom att begränsa principer kan du också ange standardvärden och göra attribut valfria. Se Ytterligare begränsningsprincipfält.
Alternativen för att begränsa principer är:
fast policy
Fasta principer begränsar attributet till det angivna värdet. För andra attributvärden än numeriska och booleska måste värdet representeras av eller konverteras till en sträng.
Med fasta principer kan du också dölja attributet från användargränssnittet genom att ange fältet hidden
till true
.
interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}
Den här exempelprincipen åtgärdar Databricks Runtime-versionen och döljer fältet från användarens användargränssnitt:
{
"spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}
Förbjuden princip
En förbjuden princip hindrar användare från att konfigurera ett attribut. Förbjudna principer är endast kompatibla med valfria attribut.
interface ForbiddenPolicy {
type: "forbidden";
}
Den här principen förbjuder att pooler kopplas till beräkningen för arbetsnoder. Pooler är också förbjudna för drivrutinsnoden eftersom driver_instance_pool_id
ärver principen.
{
"instance_pool_id": { "type": "forbidden" }
}
princip för listan över tillåtna
En princip för tillåtna listor anger en lista med värden som användaren kan välja mellan när du konfigurerar ett attribut.
interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Med det här exemplet med allowlist kan användaren välja mellan två Databricks Runtime-versioner:
{
"spark_version": { "type": "allowlist", "values": [ "13.3.x-scala2.12", "12.2.x-scala2.12" ] }
}
princip för blockeringslista
Blocklisteprincipen visar otillåtna värden. Eftersom värdena måste vara exakta matchningar kanske den här principen inte fungerar som förväntat när attributet är överseende med hur värdet representeras (till exempel om du tillåter inledande och avslutande blanksteg).
interface BlocklistPolicy {
type: "blocklist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Det här exemplet blockerar användaren från att välja 7.3.x-scala2.12
som Databricks Runtime.
{
"spark_version": { "type": "blocklist", "values": [ "7.3.x-scala2.12" ] }
}
Regex-policy
En regex-princip begränsar tillgängliga värden till värden som matchar regex. För säkerhets skull kontrollerar du att din regex är fäst vid början och slutet av strängvärdet.
interface RegexPolicy {
type: "regex";
pattern: string;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
I det här exemplet begränsas de Databricks Runtime-versioner som en användare kan välja mellan:
{
"spark_version": { "type": "regex", "pattern": "13\\.[3456].*" }
}
princip för intervall
En intervallprincip begränsar värdet till ett angivet intervall med hjälp av fälten minValue
och maxValue
. Värdet måste vara ett decimaltal.
De numeriska gränserna måste representeras som ett dubbelt flyttalsvärde. Om du vill ange brist på en specifik gräns kan du utelämna antingen minValue
eller maxValue
.
interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
I det här exemplet begränsas den maximala mängden arbetare till 10:
{
"num_workers": { "type": "range", "maxValue": 10 }
}
obegränsad princip
Den obegränsade principen används för att göra attribut obligatoriska eller för att ange standardvärdet i användargränssnittet.
interface UnlimitedPolicy {
type: "unlimited";
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
I det här exemplet läggs taggen COST_BUCKET
till i beräkningen:
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}
Om du vill ange ett standardvärde för en Spark-konfigurationsvariabel, men även tillåta utelämnande (ta bort) den:
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}
Ytterligare begränsningspolicyfält
För att begränsa principtyper kan du ange ytterligare två fält:
-
defaultValue
– det värde som automatiskt fylls i i användargränssnittet för att skapa en beräkning. -
isOptional
– En begränsningsprincip för ett attribut gör det automatiskt nödvändigt. Om du vill göra attributet valfritt anger du fältetisOptional
tilltrue
.
Obs
Standardvärden tillämpas inte automatiskt på beräkning som skapats med API:et Clusters. Om du vill använda standardvärden med hjälp av API:et lägger du till parametern apply_policy_default_values
i beräkningsdefinitionen och ställer in den på true
.
Den här exempelprincipen anger standardvärdet id1
för poolen för arbetsnoder, men gör det valfritt. När du skapar beräkningen kan du välja en annan pool eller välja att inte använda en. Om driver_instance_pool_id
inte definieras i principen eller när du skapar beräkningen används samma pool för arbetsnoder och drivrutinsnoden.
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
Skriva riktlinjer för arrayattribut
Du kan ange principer för matrisattribut på två sätt:
- Allmänna begränsningar för alla matriselement. Dessa begränsningar använder jokerteckensymbolen
*
i policysökvägen. - Specifika begränsningar för ett matriselement i ett specifikt index. Den här begränsningen använder ett tal i sökvägen.
För matrisattributet init_scripts
börjar till exempel de allmänna sökvägarna med init_scripts.*
och de specifika sökvägarna med init_scripts.<n>
, där <n>
är ett heltalsindex i matrisen (från och med 0).
Du kan kombinera allmänna och specifika begränsningar, i vilket fall den allmänna begränsningen gäller för varje matriselement som inte har någon specifik begränsning. I varje fall gäller endast en principbegränsning.
I följande avsnitt visas exempel på vanliga exempel som använder matrisattribut.
Kräv poster som är specifika för inkludering
Du kan inte kräva specifika värden utan att ange ordningen. Till exempel:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<required-script-2>"
}
}
Kräv ett fast värde för hela listan
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Tillåt inte användning helt och hållet
{
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Tillåt poster som följer en specifik begränsning
{
"init_scripts.*.volumes.destination": {
"type": "regex",
"pattern": ".*<required-content>.*"
}
}
Åtgärda en specifik uppsättning init-skript
Vid init_scripts
-sökvägar kan matrisen, beroende på användningsfallet, innehålla en av flera strukturer för vilka alla möjliga varianter kan behöva hanteras. Om du till exempel vill kräva en specifik uppsättning init-skript och inte tillåta någon variant av den andra versionen kan du använda följande mönster:
{
"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"
}
}
Exempel på policyer
Det här avsnittet innehåller principexempel som du kan använda som referenser för att skapa egna principer. Du kan också använda Azure Databricks-tillhandahållna principfamiljer som mallar för vanliga principanvändningsfall.
- Allmän beräkningsprincip
- Definiera gränser för pipelineberäkning i Delta Live Tables
- Enkel medelstor princip
- princip endast för jobb
- princip för externt metaarkiv
- Förhindra att beräkning används med jobb
- Ta bort principen för automatisk skalning
- Anpassad taggtillämpning
Allmän beräkningsprincip
En generell beräkningsprincip som är avsedd att vägleda användare och begränsa vissa funktioner, samtidigt som taggar krävs, begränsa det maximala antalet instanser och framtvinga timeout.
{
"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"
}
}
Definiera gränser för pipelineberäkning i Delta Live Tables
Not
När du använder principer för att konfigurera Delta Live Tables-beräkning rekommenderar Databricks att du tillämpar en enda princip på både default
och maintenance
beräkning.
Om du vill konfigurera en princip för en pipelineberäkning skapar du en princip med fältet cluster_type
inställt på dlt
. I följande exempel skapas en minimal princip för en Delta Live Tables-beräkning:
{
"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
}
}
Enkel medelstor princip
Tillåter användare att skapa en medelstor beräkning med minimal konfiguration. Det enda obligatoriska fältet vid skapandetillfället är beräkningsnamnet. resten är fast och dolt.
{
"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"
}
}
Endast jobbpolicy
Gör att användare kan skapa jobbberäkning för att köra jobb. Användare kan inte skapa beräkning för alla syften med den här principen.
{
"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"
}
}
Princip för externt metaarkiv
Tillåter användare att skapa beräkning med ett administratörsdefinierat metaarkiv som redan är kopplat. Detta är användbart för att tillåta användare att skapa sin egen beräkning utan att behöva ytterligare konfiguration.
{
"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>"
}
}
Förhindra att beräkning används med jobb
Den här principen hindrar användare från att använda beräkningen för att köra jobb. Användarna kommer bara kunna använda datorresurserna med notebooks.
{
"workload_type.clients.notebooks": {
"type": "fixed",
"value": true
},
"workload_type.clients.jobs": {
"type": "fixed",
"value": false
}
}
Ta bort autoskalningsprincip
Den här principen inaktiverar autoskalning och gör att användaren kan ange antalet arbetare inom ett visst intervall.
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}
Anpassad taggframtvingande
Om du vill lägga till en beräkningstaggregel i en princip använder du attributet custom_tags.<tag-name>
.
Alla användare som använder den här principen måste till exempel fylla i en COST_CENTER
tagg med 9999, 9921 eller 9531 för att beräkningen ska starta:
{"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}