Substituir configurações de tarefa Job em pacotes ativos do Databricks
Este artigo descreve como substituir as configurações da tarefa do Databricks Job em Databricks ativo Bundles. Consulte O que são pacotes Databricks ativos?
Nos arquivos de configuração do pacote do Databricks, você pode usar o mapeamento task
em uma definição Job para join as configurações de tarefas Job em um mapeamento resources
de nível superior com as configurações de tarefas de Job em um mapeamento targets
, por exemplo (reticências indicam conteúdo omitido, por questões de 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 join 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 Job for definida no mapeamento resources
de nível superior e no mapeamento targets
para o mesmo task
, então a configuração no mapeamento targets
terá precedência sobre a configuração no nível superior resources
mapeamento.
Exemplo 1: Configurações de tarefa de Job definidas em múltiplos 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 para o task_key
denominado my-task
( reticências indicam conteúdo omitido, por questões de brevidade):
# ...
resources:
jobs:
my-job:
name: my-job
tasks:
- task_key: my-task
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: i3.xlarge
num_workers: 1
# ...
Quando você executa databricks bundle validate
para este exemplo, o gráfico resultante é o seguinte (as reticências indicam o conteúdo omitido, por questões de brevidade):
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"tasks": [
{
"new_cluster": {
"node_type_id": "i3.xlarge",
"num_workers": 1,
"spark_version": "13.3.x-scala2.12"
},
"task-key": "my-task"
}
],
"...": "..."
}
}
}
}
Exemplo 2: Configurações de tarefa Job conflitantes definidas em vários mapeamentos de recursos
Neste exemplo, spark_version
e num_workers
são definidos no mapeamento resources
de nível superior e no mapeamento resources
em targets
. spark_version
e num_workers
no mapeamento resources
em targets
têm precedência sobre spark_version
e num_workers
no mapeamento resources
de nível superior. Isso define as configurações para o task_key
denominado my-task
(reticências indicam conteúdo omitido, por questões de 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: i3.xlarge
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 este exemplo, o gráfico resultante é o seguinte (as reticências indicam o conteúdo omitido, por questões de brevidade):
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"tasks": [
{
"new_cluster": {
"node_type_id": "i3.xlarge",
"num_workers": 2,
"spark_version": "12.2.x-scala2.12"
},
"task_key": "my-task"
}
],
"...": "..."
}
}
}
}