Informazioni di riferimento sui criteri file
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 razionale | Se nascosto, rimuove il campo numero di lavoro massimo dall'interfaccia utente. |
autoscale.min_workers |
numero razionale | 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 | Nome del file di destinazione. |
cluster_log_conf.type |
string | Tipo della destinazione. 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 true per abilitare o false per 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 razionale | 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 Azure Databricks - calcolo multiuso- 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 DeltaConsente 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.
Il valore dell'attributo spark_version
può corrispondere a uno dei valori seguenti:
auto:latest
: esegue il mapping alla versione più recente della disponibilità generale di Databricks Runtime.auto:latest-ml
: esegue il mapping alla versione più recente di Databricks Runtime ML.auto:latest-lts
: esegue il mapping alla versione più recente del supporto a lungo termine (LTS) Databricks Runtime.auto:latest-lts-ml
: esegue il mapping alla versione più recente di LTS Databricks Runtime ML.auto:prev-major
: esegue il mapping alla seconda versione più recente della disponibilità generale di Databricks Runtime. Ad esempio, seauto:latest
è 14.2, alloraauto:prev-major
è 13.3.auto:prev-major-ml
: esegue il mapping alla seconda versione più recente della disponibilità generale di Databricks Runtime ML. Ad esempio, seauto:latest
è 14.2, alloraauto:prev-major
è 13.3.auto:prev-lts
: esegue il mapping alla seconda versione più recente di LTS Databricks Runtime. Ad esempio, seauto:latest-lts
è 13.3, alloraauto:prev-lts
è 12.2.auto:prev-lts-ml
: esegue il mapping alla seconda versione più recente di LTS Databricks Runtime ML. Ad esempio, seauto:latest-lts
è 13.3, alloraauto: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.
Tutti i 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 campo hidden
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 campi minValue
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 campoisOptional
sutrue
.
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_scripts
matrice, 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
- Definire i limiti per il calcolo della pipeline di tabelle Live Delta
- Criteri di medie dimensioni semplici
- Criteri di solo processo
- Criteri del metastore esterno
- Impedire l'uso del calcolo con i processi
- Rimuovere i criteri di scalabilità automatica
- Applicazione di tag personalizzati
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 default
che a maintenance
.
Per configurare un criterio per un calcolo della pipeline, creare un criterio con il campo cluster_type
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 tag COST_CENTER
con 9999, 9921 o 9531 per il calcolo da avviare:
{"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}