Sostituire le impostazioni delle attività dei processi nei Pacchetti di asset di Databricks
Questo articolo descrive come eseguire l'override delle impostazioni per le attività dei processi di Azure Databricks nei Pacchetti di asset di Databricks. Consulta Che cosa sono i pacchetti di asset di Databricks?
In Azure Databricks bundle configuration filesè possibile usare il mapping task
all'interno di una definizione del processo per unire le impostazioni delle attività di processo in un mapping di resources
di primo livello con le impostazioni dell'attività di processo in un mapping di targets
, ad esempio (i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
jobs:
<some-unique-programmatic-identifier-for-this-job>:
# ...
tasks:
- task_key: <some-unique-programmatic-identifier-for-this-task>
# Task settings.
targets:
<some-unique-programmatic-identifier-for-this-target>:
resources:
jobs:
<the-matching-programmatic-identifier-for-this-job>:
# ...
tasks:
- task_key: <the-matching-programmatic-identifier-for-this-key>
# Any more task settings to join with the settings from the
# resources mapping for the matching top-level task_key.
# ...
Per unire il mapping di primo livello di resources
e il mapping di targets
per lo stesso task
, il task
dei mapping di task_key
deve essere impostato allo stesso valore.
Se un'impostazione di compito di lavoro viene definita sia nel mapping resources
di primo livello che nel mapping targets
per lo stesso task
, l'impostazione nel mapping targets
ha la precedenza sull'impostazione nel mapping resources
di primo livello.
Esempio 1: Impostazioni dei compiti lavorativi definite in più mapping di risorse e senza conflitti nelle impostazioni
In questo esempio, spark_version
nel mapping di primo livello resources
viene combinato con node_type_id
e num_workers
nel mapping resources
in targets
per definire le impostazioni per il task_key
denominato my-task
(i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
jobs:
my-job:
name: my-job
tasks:
- task_key: my-key
new_cluster:
spark_version: 13.3.x-scala2.12
targets:
development:
resources:
jobs:
my-job:
name: my-job
tasks:
- task_key: my-task
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": {
"tasks": [
{
"new_cluster": {
"node_type_id": "Standard_DS3_v2",
"num_workers": 1,
"spark_version": "13.3.x-scala2.12"
},
"task-key": "my-task"
}
],
"...": "..."
}
}
}
}
Esempio 2: Impostazioni dei compiti lavorativi in conflitto definite in diversi mapping 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
.
spark_version
e num_workers
nel mapping resources
in targets
hanno la precedenza su spark_version
e num_workers
nella mappatura di livello superiore resources
. Definisce le impostazioni per il task_key
denominato my-task
(i puntini di sospensione indicano il contenuto omesso, per brevità):
# ...
resources:
jobs:
my-job:
name: my-job
tasks:
- task_key: my-task
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
tasks:
- task_key: my-task
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": {
"tasks": [
{
"new_cluster": {
"node_type_id": "Standard_DS3_v2",
"num_workers": 2,
"spark_version": "12.2.x-scala2.12"
},
"task_key": "my-task"
}
],
"...": "..."
}
}
}
}