Informazioni di riferimento sui criteri di calcolo

Questo articolo è un riferimento per le definizioni dei criteri di calcolo. Gli articoli includono un riferimento agli attributi dei criteri disponibili e ai tipi di limitazione. Esistono anche criteri di esempio a cui è possibile fare riferimento per i casi d'uso comuni.

Che cosa sono le definizioni dei criteri?

Le definizioni dei criteri sono singole regole dei criteri espresse in JSON. Una definizione può aggiungere una regola a uno qualsiasi degli attributi controllati con l'API Clusters. Ad esempio, queste definizioni impostano un tempo di autoterminazione predefinito, impediscono agli utenti di usare i pool e applicano l'uso di Photon:

{
   "autotermination_minutes" : {
    "type" : "unlimited",
    "defaultValue" : 4320,
    "isOptional" : true
  },
  "instance_pool_id": {
    "type": "forbidden",
    "hidden": true
  },
  "runtime_engine": {
    "type": "fixed",
    "value": "PHOTON",
    "hidden": true
  }
}

Può esistere una sola limitazione per attributo. Il percorso di un attributo riflette il nome dell'attributo API. Per gli attributi annidati, il percorso concatena i nomi degli attributi annidati usando i punti. Gli attributi non definiti in una definizione di criteri non saranno limitati.

Attributi supportati

I criteri supportano tutti gli attributi controllati con l'API Clusters. Il tipo di restrizioni che è possibile applicare agli attributi può variare in base all'impostazione in base al tipo e alla relazione agli elementi dell'interfaccia utente. Non è possibile usare criteri per definire le autorizzazioni di calcolo.

È anche possibile usare i criteri per impostare il numero massimo di UNITÀ di database all'ora e il tipo di cluster. Vedere Percorsi degli attributi virtuali.

Nella tabella seguente sono elencati i percorsi degli attributi dei criteri supportati:

Percorso attributo Tipo Descrizione
autoscale.max_workers numero facoltativo Se nascosto, rimuove il campo numero di lavoro massimo dall'interfaccia utente.
autoscale.min_workers numero facoltativo Se nascosto, rimuove il campo numero di lavoro minimo dall'interfaccia utente.
autotermination_minutes number Il valore 0 non rappresenta alcuna terminazione automatica. Se nascosta, rimuove la casella di controllo terminazione automatica e l'input del valore dall'interfaccia utente.
azure_attributes.availability string Controlla l'ambiente di calcolo usa istanze su richiesta o spot (ON_DEMAND_AZURE o SPOT_WITH_FALLBACK_AZURE).
azure_attributes.first_on_demand number Controlla il numero di nodi da inserire in istanze su richiesta.
azure_attributes.spot_bid_max_price number Controlla il prezzo massimo per le istanze spot di Azure.
cluster_log_conf.path string URL di destinazione dei file di log.
cluster_log_conf.type string Tipo di destinazione del log. DBFS è l'unico valore accettabile.
cluster_name string Il nome del cluster.
custom_tags.* string Controllare valori di tag specifici aggiungendo il nome del tag, ad esempio : custom_tags.<mytag>.
data_security_mode string Imposta la modalità di accesso del cluster. Unity Catalog richiede SINGLE_USER o USER_ISOLATION (modalità di accesso condiviso nell'interfaccia utente). Un valore indica che nessuna funzionalità di NONE sicurezza è abilitata.
docker_image.basic_auth.password string Password per l'autenticazione di base dell'immagine di Databricks Container Services.
docker_image.basic_auth.username string Nome utente per l'autenticazione di base dell'immagine di Databricks Container Services.
docker_image.url string Controlla l'URL dell'immagine di Databricks Container Services. Se nascosto, rimuove la sezione Databricks Container Services dall'interfaccia utente.
driver_node_type_id stringa facoltativa Se nascosta, rimuove la selezione del tipo di nodo driver dall'interfaccia utente.
enable_local_disk_encryption boolean Impostare su per true abilitare o false disabilitare la crittografia dei dischi collegati localmente al cluster, come specificato tramite l'API.
init_scripts.*.workspace.destination init_scripts.*.volumes.destination init_scripts.*.abfss.destination init_scripts.*.file.destination string * fa riferimento all'indice dello script init nella matrice di attributi. Vedere Scrittura di criteri per gli attributi di matrice.
instance_pool_id string Controlla il pool usato dai nodi di lavoro se driver_instance_pool_id è definito anche o per tutti i nodi del cluster in caso contrario. Se si usano pool per i nodi di lavoro, è necessario usare anche i pool per il nodo driver. Se nascosto, rimuove la selezione del pool dall'interfaccia utente.
driver_instance_pool_id string Se specificato, configura un pool diverso per il nodo driver rispetto ai nodi di lavoro. Se non specificato, eredita instance_pool_id. Se si usano pool per i nodi di lavoro, è necessario usare anche i pool per il nodo driver. Se nascosto, rimuove la selezione del pool di driver dall'interfaccia utente.
node_type_id string Se nascosto, rimuove la selezione del tipo di nodo di lavoro dall'interfaccia utente.
num_workers numero facoltativo Se nascosta, rimuove la specifica del numero di lavoro dall'interfaccia utente.
runtime_engine string Determina se il cluster usa o meno Photon. I possibili valori sono PHOTON o STANDARD.
single_user_name string Nome utente per l'accesso pass-through delle credenziali a utente singolo.
spark_conf.* stringa facoltativa Controlla valori di configurazione specifici aggiungendo il nome della chiave di configurazione, ad esempio : spark_conf.spark.executor.memory.
spark_env_vars.* stringa facoltativa Controlla valori specifici delle variabili di ambiente Spark aggiungendo la variabile di ambiente, ad esempio : spark_env_vars.<environment variable name>.
spark_version string Nome della versione dell'immagine Spark specificato tramite l'API (Databricks Runtime). È anche possibile usare valori di criteri speciali che selezionano dinamicamente Databricks Runtime. Vedere Valori dei criteri speciali per la selezione di Databricks Runtime.
workload_type.clients.jobs boolean Definisce se la risorsa di calcolo può essere usata per i processi. Vedere Impedire l'uso del calcolo con i processi.
workload_type.clients.notebooks boolean Definisce se la risorsa di calcolo può essere usata con i notebook. Vedere Impedire l'uso del calcolo con i processi.

Percorsi degli attributi virtuali

Questa tabella include due attributi sintetici aggiuntivi supportati dai criteri:

Percorso attributo Tipo Descrizione
dbus_per_hour number Attributo calcolato che rappresenta il numero massimo di DBU che una risorsa può usare su base oraria, incluso il nodo driver. Questa metrica è un modo diretto per controllare i costi a livello di calcolo individuale. Usare con la limitazione dell'intervallo.
cluster_type string Rappresenta il tipo di cluster che è possibile creare:

* all-purpose per il calcolo all-purpose di Azure Databricks
* job per il calcolo dei processi creato dall'utilità di pianificazione dei processi
* dlt per le risorse di calcolo create per le pipeline di tabelle live Delta

Consente o blocca i tipi di calcolo specificati da creare dai criteri. Se il all-purpose valore non è consentito, il criterio non viene visualizzato nell'interfaccia utente di calcolo per la creazione di tutti gli scopi. Se il job valore non è consentito, il criterio non viene visualizzato nell'interfaccia utente di calcolo del processo di creazione.

Valori dei criteri speciali per la selezione di Databricks Runtime

L'attributo spark_version supporta valori speciali che eseguono il mapping dinamico a una versione di Databricks Runtime basata sul set corrente di versioni di Databricks Runtime supportate.

Nell'attributo è possibile usare i spark_version valori seguenti:

  • auto:latest: Mappe alla versione più recente di Databricks Runtime.
  • auto:latest-ml: Mappe alla versione più recente di Databricks Runtime ML.
  • auto:latest-lts: Mappe alla versione più recente del supporto a lungo termine (LTS) Databricks Runtime.
  • auto:latest-lts-ml: Mappe alla versione più recente di LTS Databricks Runtime ML.
  • auto:prev-major: Mappe alla seconda versione ga di Databricks Runtime più recente. Ad esempio, se auto:latest è 14.2, allora auto:prev-major è 13.3.
  • auto:prev-major-ml: Mappe alla seconda versione ga di Databricks Runtime ML più recente. Ad esempio, se auto:latest è 14.2, allora auto:prev-major è 13.3.
  • auto:prev-lts: Mappe alla seconda versione più recente di LTS Databricks Runtime. Ad esempio, se auto:latest-lts è 13.3, allora auto:prev-lts è 12.2.
  • auto:prev-lts-ml: Mappe alla seconda versione di LTS Databricks Runtime ML. Ad esempio, se auto:latest-lts è 13.3, allora auto:prev-lts è 12.2.

Nota

L'uso di questi valori non esegue l'aggiornamento automatico delle risorse di calcolo quando viene rilasciata una nuova versione di runtime. Un utente deve modificare in modo esplicito il calcolo per la versione di Databricks Runtime da modificare.

Tipi di criteri supportati

Questa sezione include un riferimento per ognuno dei tipi di criteri disponibili. Esistono due categorie di tipi di criteri: criteri fissi e criteri di limitazione.

I criteri corretti impediscono la configurazione utente in un attributo. I due tipi di criteri fissi sono:

La limitazione dei criteri limita le opzioni di un utente per la configurazione di un attributo. I criteri di limitazione consentono anche di impostare i valori predefiniti e rendere facoltativi gli attributi. Vedere Campi dei criteri di limitazione aggiuntivi.

Le opzioni per limitare i criteri sono:

Criteri fissi

I criteri fissi limitano l'attributo al valore specificato. Per i valori di attributo diversi da numerico e booleano, il valore deve essere rappresentato da o convertibile in una stringa.

Con i criteri fissi, è anche possibile nascondere l'attributo dall'interfaccia utente impostando il hidden campo su true.

interface FixedPolicy {
    type: "fixed";
    value: string | number | boolean;
    hidden?: boolean;
}

Questo criterio di esempio corregge la versione di Databricks Runtime e nasconde il campo dall'interfaccia utente dell'utente:

{
  "spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}

Criteri non consentiti

Un criterio non consentito impedisce agli utenti di configurare un attributo. I criteri non consentiti sono compatibili solo con gli attributi facoltativi.

interface ForbiddenPolicy {
    type: "forbidden";
}

Questo criterio impedisce il collegamento di pool al calcolo per i nodi di lavoro. I pool non sono consentiti anche per il nodo driver, perché driver_instance_pool_id eredita i criteri.

{
  "instance_pool_id": { "type": "forbidden" }
}

Criterio Consenti elenco

Un criterio allowlist specifica un elenco di valori tra cui l'utente può scegliere durante la configurazione di un attributo.

interface AllowlistPolicy {
  type: "allowlist";
  values: (string | number | boolean)[];
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Questo esempio allowlist consente all'utente di selezionare tra due versioni di Databricks Runtime:

{
  "spark_version":  { "type": "allowlist", "values": [ "13.3.x-scala2.12", "12.2.x-scala2.12" ] }
}

Criteri blocklist

I criteri dell'elenco di elementi bloccati elencano i valori non consentiti. Poiché i valori devono corrispondere esattamente, questo criterio potrebbe non funzionare come previsto quando l'attributo è leniente nel modo in cui viene rappresentato il valore ( ad esempio, consentendo spazi iniziali e finali).

interface BlocklistPolicy {
  type: "blocklist";
  values: (string | number | boolean)[];
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Questo esempio impedisce all'utente di selezionare 7.3.x-scala2.12 come Databricks Runtime.

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

Criteri regex

Un criterio regex limita i valori disponibili a quelli che corrispondono all'espressione regolare. Per motivi di sicurezza, assicurarsi che l'espressione regolare sia ancorata all'inizio e alla fine del valore stringa.

interface RegexPolicy {
  type: "regex";
  pattern: string;
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Questo esempio limita le versioni di Databricks Runtime tra cui un utente può selezionare:

{
  "spark_version":  { "type": "regex", "pattern": "13\\.[3456].*" }
}

Criteri di intervallo

I criteri di intervallo limitano il valore a un intervallo specificato utilizzando i minValue campi e maxValue . Il valore deve essere un numero decimale. I limiti numerici devono essere rappresentabili come valore a virgola mobile doppia. Per indicare la mancanza di un limite specifico, è possibile omettere minValue o maxValue.

interface RangePolicy {
  type: "range";
  minValue?: number;
  maxValue?: number;
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Questo esempio limita la quantità massima di ruoli di lavoro a 10:

{
  "num_workers":  { "type": "range", "maxValue": 10 }
}

Criteri illimitati

Il criterio illimitato viene usato per rendere obbligatori gli attributi o per impostare il valore predefinito nell'interfaccia utente.

interface UnlimitedPolicy {
  type: "unlimited";
  defaultValue?: string | number | boolean;
  isOptional?: boolean;
}

Questo esempio aggiunge il COST_BUCKET tag al calcolo:

{
  "custom_tags.COST_BUCKET":  { "type": "unlimited" }
}

Per impostare un valore predefinito per una variabile di configurazione Spark, ma anche consentire l'omissione (rimozione) di questa variabile:

{
  "spark_conf.spark.my.conf":  { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}

Campi dei criteri di limitazione aggiuntivi

Per limitare i tipi di criteri, è possibile specificare due campi aggiuntivi:

  • defaultValue - Valore che popola automaticamente nell'interfaccia utente di calcolo di creazione.
  • isOptional - Un criterio di limitazione per un attributo lo rende obbligatorio automaticamente. Per rendere facoltativo l'attributo, impostare il isOptional campo su true.

Nota

I valori predefiniti non vengono applicati automaticamente al calcolo creato con l'API Clusters. Per applicare i valori predefiniti usando l'API, aggiungere il parametro apply_policy_default_values alla definizione di calcolo e impostarlo su true.

Questo criterio di esempio specifica il valore id1 predefinito per il pool per i nodi di lavoro, ma lo rende facoltativo. Quando si crea il calcolo, è possibile selezionare un pool diverso o scegliere di non usarlo. Se driver_instance_pool_id non è definito nei criteri o quando si crea il calcolo, viene usato lo stesso pool per i nodi di lavoro e il nodo driver.

{
  "instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}

Scrittura di criteri per gli attributi di matrice

È possibile specificare i criteri per gli attributi di matrice in due modi:

  • Limitazioni generiche per tutti gli elementi della matrice. Queste limitazioni usano il * simbolo jolly nel percorso dei criteri.
  • Limitazioni specifiche per un elemento di matrice in corrispondenza di un indice specifico. Queste limitazioni usano un numero nel percorso.

Ad esempio, per l'attributo init_scriptsmatrice , i percorsi generici iniziano con init_scripts.* e i percorsi specifici con init_scripts.<n>, dove <n> è un indice integer nella matrice (a partire da 0). È possibile combinare limitazioni generiche e specifiche, nel qual caso la limitazione generica si applica a ogni elemento di matrice che non presenta una limitazione specifica. In ogni caso verrà applicata una sola limitazione dei criteri.

Nelle sezioni seguenti vengono illustrati esempi di esempi comuni che usano attributi di matrice.

Richiedi voci specifiche dell'inclusione

Non è possibile richiedere valori specifici senza specificare l'ordine. Ad esempio:

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-1>"
  },
  "init_scripts.1.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-2>"
  }
}

Richiedi un valore fisso dell'intero elenco

{
  "init_scripts.0.volumes.destination": {
    "type": "fixed",
    "value": "<required-script-1>"
  },
  "init_scripts.*.volumes.destination": {
    "type": "forbidden"
  }
}

Non consentire completamente l'uso

{
   "init_scripts.*.volumes.destination": {
    "type": "forbidden"
  }
}

Consenti voci che seguono restrizioni specifiche

{
    "init_scripts.*.volumes.destination": {
    "type": "regex",
    "pattern": ".*<required-content>.*"
  }
}

Correggere un set specifico di script init

In caso di init_scripts percorsi, la matrice può contenere una di più strutture per cui tutte le possibili varianti possono essere gestite a seconda del caso d'uso. Ad esempio, per richiedere un set specifico di script init e non consentire qualsiasi variante dell'altra versione, è possibile usare il modello seguente:

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

Esempi di criteri

Questa sezione include esempi di criteri che è possibile usare come riferimenti per la creazione di criteri personalizzati. È anche possibile usare le famiglie di criteri fornite da Azure Databricks come modelli per i casi d'uso comuni dei criteri.

Criteri di calcolo generali

Un criterio di calcolo per utilizzo generico destinato a guidare gli utenti e limitare alcune funzionalità, richiedendo tag, limitando il numero massimo di istanze e applicando il 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"
  }
}

Definire i limiti per il calcolo della pipeline di tabelle live Delta

Nota

Quando si usano i criteri per configurare l'ambiente di calcolo delle tabelle live Delta, Databricks consiglia di applicare un singolo criterio sia al calcolo che a default .maintenance

Per configurare un criterio per un calcolo della pipeline, creare un criterio con il cluster_type campo impostato su dlt. L'esempio seguente crea un criterio minimo per un calcolo di tabelle Live Delta:

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

Criteri di medie dimensioni semplici

Consente agli utenti di creare un calcolo di medie dimensioni con una configurazione minima. L'unico campo obbligatorio in fase di creazione è il nome del calcolo; il resto è fisso e nascosto.

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

Criteri di solo processo

Consente agli utenti di creare il calcolo del processo per l'esecuzione di processi. Gli utenti non possono creare risorse di calcolo per tutti gli scopi usando questo criterio.

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

Criteri del metastore esterno

Consente agli utenti di creare risorse di calcolo con un metastore definito dall'amministratore già collegato. Ciò è utile per consentire agli utenti di creare il proprio ambiente di calcolo senza richiedere una configurazione aggiuntiva.

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

Impedire l'uso del calcolo con i processi

Questo criterio impedisce agli utenti di usare il calcolo per eseguire i processi. Gli utenti potranno usare solo il calcolo con i notebook.

{
  "workload_type.clients.notebooks": {
    "type": "fixed",
    "value": true
  },
  "workload_type.clients.jobs": {
    "type": "fixed",
    "value": false
  }
}

Rimuovere i criteri di scalabilità automatica

Questo criterio disabilita la scalabilità automatica e consente all'utente di impostare il numero di ruoli di lavoro all'interno di un determinato intervallo.

{
  "num_workers": {
  "type": "range",
  "maxValue": 25,
  "minValue": 1,
  "defaultValue": 5
  }
}

Applicazione di tag personalizzati

Per aggiungere una regola di tag di calcolo a un criterio, usare l'attributo custom_tags.<tag-name> .

Ad esempio, qualsiasi utente che usa questo criterio deve compilare un COST_CENTER tag con 9999, 9921 o 9531 per il calcolo da avviare:

   {"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}