Dela via


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-pipelines

Tillå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. Om auto:latest till exempel är 14,2 är auto:prev-major 13,3.
  • auto:prev-major-ml: Mappar till den näst senaste GA Databricks Runtime ML-versionen. Om auto:latest till exempel är 14,2 är auto:prev-major 13,3.
  • auto:prev-lts: Mappar till den näst senaste LTS Databricks Runtime-versionen. Om auto:latest-lts till exempel är 13,3 är auto:prev-lts 12,2.
  • auto:prev-lts-ml: Mappar till den näst senaste LTS Databricks Runtime ML-versionen. Om auto:latest-lts till exempel är 13,3 är auto: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ältet isOptional till true.

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_scriptsbö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

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