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 cluster . 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
Le politiche supportano tutti gli attributi controllati con l'API Cluster . 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.
Puoi anche utilizzare le politiche per impostare il numero massimo di DBUs all'ora e il tipo di cluster. Consultare i percorsi degli attributi virtuali .
Nella tabella seguente sono elencati i percorsi degli attributi dei criteri supportati:
Percorso dell'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 |
numero | Il valore 0 non rappresenta alcuna terminazione automatica. Se nascosta, rimuove dall'interfaccia utente la casella di controllo per la terminazione automatica e il campo di inserimento del valore. |
azure_attributes.availability |
corda | Controlla se l'uso dell'ambiente di calcolo avviene tramite istanze su richiesta o spot (ON_DEMAND_AZURE o SPOT_WITH_FALLBACK_AZURE ). |
azure_attributes.first_on_demand |
numero | Controlla il numero di nodi da allocare in istanze su richiesta. |
azure_attributes.spot_bid_max_price |
numero | Controlla il prezzo massimo per le istanze spot di Azure. |
cluster_log_conf.path |
corda | URL di destinazione dei file di log. |
cluster_log_conf.type |
corda | Tipo di destinazione del log.
DBFS è l'unico valore accettabile. |
cluster_name |
corda | Nome del cluster. |
custom_tags.* |
corda | Controllare i valori di tag specifici aggiungendo il nome del tag, ad esempio custom_tags.<mytag> . |
data_security_mode |
corda | Imposta la modalità di accesso del cluster. Il catalogo Unity richiede SINGLE_USER o USER_ISOLATION (modalità di accesso condiviso nell'interfaccia utente). Un valore di NONE indica che non sono abilitate funzionalità di sicurezza. |
docker_image.basic_auth.password |
corda | Password per l'autenticazione di base dell'immagine di Databricks Container Services. |
docker_image.basic_auth.username |
corda | Nome utente per l'autenticazione di base dell'immagine del servizio container di Databricks. |
docker_image.url |
corda | 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
|
corda |
* fa riferimento all'indice dello script init nella matrice di attributi. Vedere Scrittura di criteri per gli attributi di matrice. |
instance_pool_id |
corda | Controlla il pool utilizzato dai nodi di lavoro se driver_instance_pool_id è anch'esso definito, o per tutti i nodi del cluster altrimenti. 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 |
corda | 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 |
corda | Se nascosto, rimuove la selezione del tipo di nodo di lavoro dall'interfaccia utente. |
num_workers |
numero facoltativo | Quando è nascosta, rimuove la specifica del numero del lavoratore dall'interfaccia utente. |
runtime_engine |
corda | Determina se il cluster usa o meno Photon. I valori possibili sono PHOTON o STANDARD . |
single_user_name |
corda | Controlla quali utenti o gruppi possono essere assegnati alla risorsa di calcolo. |
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 |
corda | Nome della versione dell'immagine Spark, come specificato tramite l'API (ovvero il 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 le attività. Consulta 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. Consulta Impedire l'uso del calcolo con i processi. |
Percorsi degli attributi virtuali
Questa tabella include due attributi sintetici aggiuntivi supportati dai criteri:
Valori delle politiche 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.
I valori seguenti possono essere usati nell'attributo spark_version
:
-
auto:latest
: corrisponde alla versione più recente di Databricks Runtime GA. -
auto:latest-ml
: Corrisponde alla versione più recente di Databricks Runtime ML. -
auto:latest-lts
: Corrisponde alla versione più recente del Databricks Runtime con supporto a lungo termine (LTS). -
auto:latest-lts-ml
: Corrisponde alla versione più recente di LTS Databricks Runtime ML. -
auto:prev-major
: esegue il mapping alla seconda versione più recente di disponibilità generale di Databricks Runtime. Ad esempio, seauto:latest
è 14.2,auto:prev-major
è 13.3. -
auto:prev-major-ml
: esegue il mapping alla seconda versione ga di Databricks Runtime ML più recente. Ad esempio, seauto:latest
è 14.2,auto:prev-major
è 13.3. -
auto:prev-lts
: corrisponde alla penultima versione di LTS Databricks Runtime. Ad esempio, seauto:latest-lts
è 13.3,auto:prev-lts
è 12.2. -
auto:prev-lts-ml
: mappa alla seconda versione più recente di LTS del Databricks Runtime ML. Ad esempio, seauto:latest-lts
è 13.3,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 esplicitamente la configurazione di calcolo per cambiare la versione di Databricks Runtime.
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.
Le politiche fisse impediscono la configurazione utente su 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:
- Politica di lista consentita
- politica della lista di blocco
- politica Regex
- Politica di intervallo
- Politica illimitata
politica fissa
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 blocca la versione di Databricks Runtime e nasconde il campo dall'interfaccia utente:
{
"spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}
politica Vietata
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 neanche per il nodo driver, perché driver_instance_pool_id
eredita la politica.
{
"instance_pool_id": { "type": "forbidden" }
}
criterio lista di autorizzazione
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" ] }
}
politica Lista di blocco
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" ] }
}
politica Regex
Una politica di espressione regolare 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 della 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].*" }
}
Politica di intervallo
Un criterio di intervallo limita il valore a un intervallo specificato usando 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 il numero massimo di lavoratori a 10.
{
"num_workers": { "type": "range", "maxValue": 10 }
}
politica illimitata
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 tag COST_BUCKET
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 necessario automaticamente. Per rendere facoltativo l'attributo, impostare il campoisOptional
sutrue
.
Nota
I valori predefiniti non vengono applicati automaticamente al calcolo creato con l'API cluster . Per applicare i valori predefiniti usando l'API, aggiungere il parametro apply_policy_default_values
alla definizione di calcolo e impostarlo su true
.
Questo esempio di politica specifica il valore predefinito id1
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 di matrice init_scripts
, i percorsi generici iniziano con init_scripts.*
e i percorsi specifici con init_scripts.<n>
, dove <n>
è un indice intero 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. Per 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 l'uso completamente
{
"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 percorsi di init_scripts
, la matrice può contenere una delle molte strutture per cui tutte le possibili varianti devono 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 politiche
Questa sezione include esempi di criteri che è possibile usare come riferimenti per la creazione di criteri personalizzati. È anche possibile usare le famiglie di criteri di fornite da Azure Databricks come modelli per i casi d'uso comuni dei criteri.
- criteri di calcolo generali
- Definire i limiti sul calcolo della pipeline Delta Live Tables
- Semplice polizza di medie dimensioni
- Politica solo lavoro
- politica del metastore esterno
- Impedire l'uso delle risorse di 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 Delta Live Tables
Nota
Quando si usano policy per configurare il calcolo di Delta Live Tables, Databricks consiglia di applicare una singola policy sia al computo default
che al computo 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
}
}
Polizza semplice e di medie dimensioni
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"
}
}
Politica solo lavoro
Consente agli utenti di creare risorse di calcolo per eseguire attività. 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 delle risorse di calcolo con i lavori
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 una politica, 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" ]}}