Sovrascrivere le impostazioni del cluster nei pacchetti di asset di Databricks
Questo articolo descrive come modificare le impostazioni per i cluster di Azure Databricks nei Pacchetti di asset Databricks. Consultare Che cosa sono i pacchetti di asset di Databricks?
In Azure Databricks bundle configuration files, è possibile unire le impostazioni del cluster in una mappatura di primo livello resources
con le impostazioni del cluster in una mappatura targets
, come indicato di seguito.
Per i lavori, utilizzare il mapping job_cluster_key
all'interno di una definizione di lavoro per unire le impostazioni del cluster in un mapping resources
di primo livello con le impostazioni del cluster in un mapping targets
, 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 resources
di primo livello che nel mapping targets
per lo stesso job_cluster_key
, l'impostazione nel mapping targets
ha la precedenza sull'impostazione nel mapping di resources
di primo livello.
Per le pipeline di tabelle live Delta, usare il mapping label
all'interno della cluster
di una definizione di pipeline per unire le impostazioni del cluster in un mapping resources
di primo livello con le impostazioni del cluster in un mapping targets
, 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 resources
di primo livello che nel mapping targets
per lo stesso label
, l'impostazione nel mapping targets
ha la precedenza sull'impostazione nel mapping di resources
di primo livello.
Esempio 1: Nuove impostazioni del cluster di lavoro definite in più mapping di risorse e senza conflitti di impostazioni
In questo esempio, spark_version
nel mapping di primo livello resources
è combinato con node_type_id
e num_workers
nel mapping resources
in targets
per definire le impostazioni per il job_cluster_key
denominato 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: Conflitti delle nuove impostazioni del cluster di lavoro definite in più mappature di risorse
In questo esempio, spark_version
e num_workers
sono definiti sia nel mapping resources
di primo livello che nel mapping resources
in targets
. In questo esempio, spark_version
e num_workers
nel mapping resources
in targets
hanno la precedenza su spark_version
e num_workers
nel mapping resources
di primo livello, per definire le impostazioni per il job_cluster_key
denominato 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ù mappature delle risorse e senza conflitti di configurazione
In questo esempio, node_type_id
nella mappatura di primo livello resources
viene combinato con num_workers
nella mappatura resources
in targets
per definire le impostazioni per l'label
denominata 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, num_workers
è definito sia nel mapping resources
di primo livello che nel mapping resources
in targets
.
num_workers
nel mapping resources
in targets
prendono priorità su num_workers
nel mapping a livello superiore resources
per definire le impostazioni per il label
denominato default
(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
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
}
],
"...": "..."
}
}
}
}