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 no Databricks Asset Bundles. Consulte O que são Databricks Asset Bundles?
No Azure Databricks ficheiros de configuração do pacote, pode utilizar o mapeamento de task
dentro de uma definição de uma tarefa para unir as configurações das tarefas no mapeamento superior resources
com as configurações das tarefas no mapeamento targets
, 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 resources
de nível superior e o mapeamento de targets
para a mesma task
, a task_key
dos mapeamentos de task
deve ser definida com o mesmo valor.
Se qualquer configuração de tarefa de trabalho for definida no mapeamento de resources
de nível superior e no mapeamento de targets
para o mesmo task
, a configuração no mapeamento de targets
terá precedência sobre a configuração no mapeamento de resources
de nível 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 superior resources
é combinado com node_type_id
e num_workers
no mapeamento de resources
em targets
para definir as configurações do task_key
chamado 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 se executa databricks bundle validate
neste exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido para maior 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 num_workers
são definidas no mapeamento de resources
de nível superior e no mapeamento de resources
em targets
.
spark_version
e num_workers
no mapeamento de resources
em targets
têm precedência sobre spark_version
e num_workers
no mapeamento de resources
de nível superior. Isso define as definições para o task_key
chamado my-task
(reticências indicam conteúdo omitido, por concisão).
# ...
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 se executa databricks bundle validate
neste exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido para maior 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"
}
],
"...": "..."
}
}
}
}