Eseguire l'override delle impostazioni delle attività del processo in Aggregazioni di asset di Databricks
Questo articolo descrive come eseguire l'override delle impostazioni per le attività di processo 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 usare il task
mapping all'interno di una definizione del processo per unire le impostazioni delle attività di processo in un mapping di primo livello resources
con le impostazioni dell'attività di processo 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>:
# ...
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 resources
e il targets
mapping per lo stesso task
, i task
mapping devono task_key
essere impostati sullo stesso valore.
Se un'impostazione di attività di processo viene definita sia nel mapping di primo livello che nel targets
mapping per lo stesso task
, l'impostazione nel targets
mapping ha la precedenza sull'impostazione nel mapping di primo livelloresources
.resources
Esempio 1: Impostazioni delle attività di processo definite in più mapping delle 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 task_key
puntini di sospensione denominati 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 delle attività di processo in conflitto 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
. spark_version
e num_workers
nel mapping in targets
hanno la resources
precedenza e spark_version
num_workers
nel mapping di primo livelloresources
. In questo modo vengono definite le impostazioni per i task_key
puntini di sospensione denominati 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"
}
],
"...": "..."
}
}
}
}