Dela via


Referens för beräkningsprincip

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 kluster-API:et. 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 styrs med kluster-API:et. 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 Sökvägar för virtuella attribut.

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 Styr beräkningen använder instanser på begäran eller oanvänd kapacitet (ON_DEMAND_AZURE eller SPOT_WITH_FALLBACK_AZURE).
azure_attributes.first_on_demand Nummer Styr antalet noder som ska placeras på begäran-instanser.
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 loggmål. 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). NONE Värdet 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 boolean Ange till true för att aktivera eller false inaktivera kryptering av diskar som är lokalt anslutna till klustret (enligt vad 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 Skriva principer för matrisattribut.
instance_pool_id sträng Styr poolen som används av arbetsnoder om driver_instance_pool_id den också har definierats eller för alla klusternoder på annat sätt. 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 Användarnamnet för åtkomst till autentiseringsuppgifter för enskild användare.
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-avbildningsversionen enligt 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 Val av Databricks Runtime.
workload_type.clients.jobs boolean Definierar om beräkningsresursen kan användas för jobb. Se Förhindra att beräkning används med jobb.
workload_type.clients.notebooks boolean 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 azure databricks all-purpose compute
* job för jobbberäkning som skapats av jobbschemaläggaren
* 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 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 principen i användargränssnittet för att skapa jobbberäkning.

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

Kommentar

Om du använder dessa värden görs inte automatisk uppdatering av beräkningen 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 princip

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 tillåtna listor

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

Blocklisteprincip

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 7.3.x-scala2.12 välja som Databricks Runtime.

{
  "spark_version":  { "type": "blocklist", "values": [ "7.3.x-scala2.12" ] }
}

Regex-princip

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

Intervallprincip

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änsningsprincipfält

För att begränsa principtyper kan du ange ytterligare två fält:

  • defaultValue – Det värde som fylls i automatiskt i användargränssnittet för att skapa 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.

Kommentar

Standardvärden tillämpas inte automatiskt på beräkning som skapats med kluster-API:et. 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 anger den till 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 har definierats 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 principer för matrisattribut

Du kan ange principer för matrisattribut på två sätt:

  • Allmänna begränsningar för alla matriselement. Dessa begränsningar använder * jokertecknet i principsö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 inkluderingsspecifika poster

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

Om det gäller init_scripts sökvägar kan matrisen innehålla en av flera strukturer för vilka alla möjliga varianter kan behöva hanteras beroende på användningsfallet. 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å principer

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 principfamiljerna som tillhandahålls av Azure Databricks 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 för Delta Live Tables

Kommentar

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äkningen.

Om du vill konfigurera en princip för en pipelineberäkning skapar du en princip med fältet inställt på cluster_type 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"
  }
}

Princip endast för jobb

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 kan bara använda beräkningen med notebook-filer.

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

Tvingande av anpassad tagg

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