Eseguire l'override delle impostazioni del cluster in Bundle di asset di Databricks
Questo articolo descrive come eseguire l'override delle impostazioni per i cluster di Azure Databricks in Bundle di asset di Databricks. Vedere Che cosa sono i bundle di asset di Databricks?
Nei file di configurazione del bundle di Azure Databricks è possibile aggiungere le impostazioni del cluster in un mapping di primo livello resources
con le impostazioni del cluster in un targets
mapping, come indicato di seguito.
Per i processi, usare il job_cluster_key
mapping all'interno di una definizione di processo per unire le impostazioni del cluster in un mapping di primo livello resources
con le impostazioni del cluster in un targets
mapping, ad esempio (i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
jobs:
<some-unique-programmatic-identifier-for-this-job>:
# ...
job_clusters:
- job_cluster_key: <some-unique-programmatic-identifier-for-this-key>
new_cluster:
# Cluster settings.
targets:
<some-unique-programmatic-identifier-for-this-target>:
resources:
jobs:
<the-matching-programmatic-identifier-for-this-job>:
# ...
job_clusters:
- job_cluster_key: <the-matching-programmatic-identifier-for-this-key>
# Any more cluster settings to join with the settings from the
# resources mapping for the matching top-level job_cluster_key.
# ...
Se un'impostazione del cluster è definita sia nel mapping di primo livello che nel targets
mapping per lo stesso job_cluster_key
, l'impostazione nel targets
mapping ha la precedenza sull'impostazione nel mapping di primo livelloresources
.resources
Per le pipeline delta live tables, usare il label
mapping all'interno cluster
di una definizione di pipeline per unire le impostazioni del cluster in un mapping di primo livello resources
con le impostazioni del cluster in un targets
mapping, ad esempio (i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
pipelines:
<some-unique-programmatic-identifier-for-this-pipeline>:
# ...
clusters:
- label: default | maintenance
# Cluster settings.
targets:
<some-unique-programmatic-identifier-for-this-target>:
resources:
pipelines:
<the-matching-programmatic-identifier-for-this-pipeline>:
# ...
clusters:
- label: default | maintenance
# Any more cluster settings to join with the settings from the
# resources mapping for the matching top-level label.
# ...
Se un'impostazione del cluster è definita sia nel mapping di primo livello che nel targets
mapping per lo stesso label
, l'impostazione nel targets
mapping ha la precedenza sull'impostazione nel mapping di primo livelloresources
.resources
Esempio 1: Nuove impostazioni del cluster di processi definite in più mapping di risorse e senza conflitti di impostazioni
In questo esempio, spark_version
nel mapping di primo livello resources
viene combinato con node_type_id
e num_workers
nel resources
mapping in targets
per definire le impostazioni per i job_cluster_key
puntini di sospensione denominati my-cluster
(i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
new_cluster:
spark_version: 13.3.x-scala2.12
targets:
development:
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
new_cluster:
node_type_id: Standard_DS3_v2
num_workers: 1
# ...
Quando si esegue databricks bundle validate
per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"job_clusters": [
{
"job_cluster_key": "my-cluster",
"new_cluster": {
"node_type_id": "Standard_DS3_v2",
"num_workers": 1,
"spark_version": "13.3.x-scala2.12"
}
}
],
"...": "..."
}
}
}
}
Esempio 2: Conflitto di nuove impostazioni del cluster di processi definite in più mapping di risorse
In questo esempio , spark_version
e num_workers
sono definiti sia nel mapping di primo livello resources
che nel resources
mapping in targets
. In questo esempio spark_version
e num_workers
nel mapping in targets
hanno la resources
precedenza su spark_version
e num_workers
nel mapping di primo livello resources
per definire le impostazioni per i job_cluster_key
nomi my-cluster
(i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
new_cluster:
spark_version: 13.3.x-scala2.12
node_type_id: Standard_DS3_v2
num_workers: 1
targets:
development:
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
new_cluster:
spark_version: 12.2.x-scala2.12
num_workers: 2
# ...
Quando si esegue databricks bundle validate
per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"job_clusters": [
{
"job_cluster_key": "my-cluster",
"new_cluster": {
"node_type_id": "Standard_DS3_v2",
"num_workers": 2,
"spark_version": "12.2.x-scala2.12"
}
}
],
"...": "..."
}
}
}
}
Esempio 3: Impostazioni del cluster della pipeline definite in più mapping delle risorse e senza conflitti di impostazioni
In questo esempio, node_type_id
nel mapping di primo livello resources
viene combinato con num_workers
nel resources
mapping in targets
per definire le impostazioni per i label
nomi default
(i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
pipelines:
my-pipeline:
clusters:
- label: default
node_type_id: Standard_DS3_v2
targets:
development:
resources:
pipelines:
my-pipeline:
clusters:
- label: default
num_workers: 1
# ...
Quando si esegue databricks bundle validate
per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):
{
"...": "...",
"resources": {
"pipelines": {
"my-pipeline": {
"clusters": [
{
"label": "default",
"node_type_id": "Standard_DS3_v2",
"num_workers": 1
}
],
"...": "..."
}
}
}
}
Esempio 4: Impostazioni del cluster della pipeline in conflitto definite in più mapping di risorse
In questo esempio viene num_workers
definito sia nel mapping di primo livello resources
che nel resources
mapping in targets
. num_workers
nel mapping in ha la resources
precedenza num_workers
nel mapping di primo livelloresources
, per definire le impostazioni per il label
denominato default
(i puntini di sospensione indicano il contenuto omesso, per brevità):targets
# ...
resources:
pipelines:
my-pipeline:
clusters:
- label: default
node_type_id: Standard_DS3_v2
num_workers: 1
targets:
development:
resources:
pipelines:
my-pipeline:
clusters:
- label: default
num_workers: 2
# ...
Quando si esegue databricks bundle validate
per questo esempio, il grafico risultante è il seguente (i puntini di sospensione indicano il contenuto omesso, per brevità):
{
"...": "...",
"resources": {
"pipelines": {
"my-pipeline": {
"clusters": [
{
"label": "default",
"node_type_id": "Standard_DS3_v2",
"num_workers": 2
}
],
"...": "..."
}
}
}
}