Substituir as configurações das tarefas de trabalho nos Pacotes de Ativos do Databricks
Este artigo descreve como substituir as configurações das tarefas de trabalho do Azure Databricks em Pacotes de Ativos do Databricks. Veja O que são pacotes de ativos do Databricks?
Nos arquivos de configuração do pacote do Azure Databricks, você pode utilizar o mapeamento task
em uma definição de trabalho para unir as configurações das tarefas de trabalho em um mapeamento resources
de nível superior com as configurações das tarefas de trabalho em um mapeamento targets
, por exemplo (as reticências indicam um conteúdo omitido, por 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 resources
de nível superior e o mapeamento targets
para o mesmo task
, o task_key
dos mapeamentos task
deve ser definido 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 tarefa de trabalho definidas em vários mapeamentos de recursos e sem conflitos de configurações
Neste exemplo, spark_version
no mapeamento resources
de nível superior é combinado com node_type_id
e num_workers
no mapeamento 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 você executa databricks bundle validate
para esse exemplo, o grafo resultante é o seguinte (as 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 de tarefa de trabalho conflitantes definidas em vários mapeamentos de recursos
Neste exemplo, spark_version
e num_workers
são definidos 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 configurações para o task_key
chamado my-task
(as reticência 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
para esse exemplo, o gráfico resultante é o seguinte (as elipses indicam conteúdo omitido, para fins de 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"
}
],
"...": "..."
}
}
}
}