Substituir configurações de tarefas de trabalho no Databricks Asset Bundles
Este artigo descreve como substituir as configurações para tarefas de trabalho do Azure Databricks em Databricks Asset Bundles. Consulte O que são Databricks Asset Bundles?
Nos arquivos de configuração de pacote do Azure Databricks, você pode usar o task
mapeamento dentro de uma definição de trabalho para unir as configurações de tarefas de trabalho em um mapeamento de nível resources
superior com as configurações de tarefa de trabalho em um targets
mapeamento, por exemplo (reticências indicam conteúdo omitido, para brevidade):
# ...
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.
# ...
Para unir o mapeamento de nível resources
superior e o targets
mapeamento para o mesmo task
, os task
mapeamentos task_key
devem ser definidos com o mesmo valor.
Se qualquer configuração de tarefa de trabalho for definida no mapeamento de nível resources
superior e no targets
mapeamento para o mesmo task
, a configuração no targets
mapeamento terá precedência sobre a configuração no mapeamento de nível resources
superior.
Exemplo 1: Configurações de tarefas de trabalho definidas em vários mapeamentos de recursos e sem conflitos de configurações
Neste exemplo, spark_version
no mapeamento de nível resources
superior é combinado com node_type_id
e num_workers
no resources
mapeamento em targets
para definir as configurações para o task_key
nomeado my-task
(reticências indicam conteúdo omitido, para brevidade):
# ...
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 você executa databricks bundle validate
este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, para brevidade):
{
"...": "...",
"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"
}
],
"...": "..."
}
}
}
}
Exemplo 2: Configurações conflitantes de tarefas de trabalho definidas em vários mapeamentos de recursos
Neste exemplo, spark_version
e são definidos no mapeamento de nível resources
superior e no resources
mapeamento em targets
num_workers
. spark_version
e num_workers
no mapeamento em targets
ter precedência sobre spark_version
e num_workers
no mapeamento de nível resources
superior.resources
Isso define as configurações para o task_key
nome my-task
(reticências indicam conteúdo omitido, para brevidade):
# ...
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 você executa databricks bundle validate
este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, para brevidade):
{
"...": "...",
"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"
}
],
"...": "..."
}
}
}
}