Substituir com configurações de destino
Esta página descreve como substituir ou join configurações de nível superior com configurações de destino em Databricks ativo Bundles. Para obter informações sobre as configurações do pacote, consulte Configuração do pacote ativoDatabricks.
Substituição de configurações de artefato
Você pode substituir as configurações de artefato em um mapeamento artifacts
de nível superior pelas configurações de artefato em um mapeamento targets
, por exemplo:
# ...
artifacts:
<some-unique-programmatic-identifier-for-this-artifact>:
# Artifact settings.
targets:
<some-unique-programmatic-identifier-for-this-target>:
artifacts:
<the-matching-programmatic-identifier-for-this-artifact>:
# Any more artifact settings to join with the settings from the
# matching top-level artifacts mapping.
Se qualquer configuração de artefato for definida no mapeamento de nível superior artifacts
e no mapeamento targets
para o mesmo artefato, a configuração no mapeamento targets
terá precedência sobre a configuração no mapeamento de nível superior artifacts
.
Exemplo 1: Configurações de artefatos definidas apenas no mapeamento de artefatos de nível superior
Para demonstrar como isso funciona na prática, no exemplo a seguir, path
é definido no mapeamento de nível superior artifacts
, que define todas as configurações do artefato:
# ...
artifacts:
my-artifact:
type: whl
path: ./my_package
# ...
Quando você executa databricks bundle validate
para este exemplo, o gráfico resultante é:
{
"...": "...",
"artifacts": {
"my-artifact": {
"type": "whl",
"path": "./my_package",
"...": "..."
}
},
"...": "..."
}
Exemplo 2: Configurações de artefatos conflitantes definidas em vários mapeamentos de artefatos
Neste exemplo, path
é definido tanto no mapeamento de nível superior artifacts
quanto no mapeamento artifacts
em targets
. Neste exemplo, path
no mapeamento artifacts
em targets
tem precedência sobre path
no mapeamento de nível superior artifacts
, para definir as configurações do artefato:
# ...
artifacts:
my-artifact:
type: whl
path: ./my_package
targets:
dev:
artifacts:
my-artifact:
path: ./my_other_package
# ...
Quando você executa databricks bundle validate
para este exemplo, o gráfico resultante é:
{
"...": "...",
"artifacts": {
"my-artifact": {
"type": "whl",
"path": "./my_other_package",
"...": "..."
}
},
"...": "..."
}
Substituições de configurações de cluster
Você pode substituir ou join as configurações cluster de trabalho ou pipeline para um destino.
Para Job, use job_cluster_key
dentro de uma definição de Job para identificar as configurações cluster de Job no mapeamento de nível superior resources
para join com as configurações cluster Job em um mapeamento targets
:
# ...
resources:
jobs:
<some-unique-programmatic-identifier-for-this-job>:
# ...
job_clusters:
- job_cluster_key: <some-unique-programmatic-identifier-for-this-key>
new_cluster:
# Cluster settings.
targets:
<some-unique-programmatic-identifier-for-this-target>:
resources:
jobs:
<the-matching-programmatic-identifier-for-this-job>:
# ...
job_clusters:
- job_cluster_key: <the-matching-programmatic-identifier-for-this-key>
# Any more cluster settings to join with the settings from the
# resources mapping for the matching top-level job_cluster_key.
# ...
Se qualquer configuração de cluster for definida no mapeamento de nível superior resources
e no mapeamento targets
para o mesmo job_cluster_key
, a configuração no mapeamento targets
terá precedência sobre a configuração no mapeamento de nível superior resources
.
Para o pipeline declarativo LakeFlow , use label
nas configurações cluster de uma definição pipeline para identificar as configurações cluster em um mapeamento resources
de nível superior para join com as configurações cluster em um mapeamento targets
, por exemplo:
# ...
resources:
pipelines:
<some-unique-programmatic-identifier-for-this-pipeline>:
# ...
clusters:
- label: default | maintenance
# Cluster settings.
targets:
<some-unique-programmatic-identifier-for-this-target>:
resources:
pipelines:
<the-matching-programmatic-identifier-for-this-pipeline>:
# ...
clusters:
- label: default | maintenance
# Any more cluster settings to join with the settings from the
# resources mapping for the matching top-level label.
# ...
Se qualquer configuração de cluster for definida no mapeamento de nível superior resources
e no mapeamento targets
para o mesmo label
, a configuração no mapeamento targets
terá precedência sobre a configuração no mapeamento de nível superior resources
.
Exemplo 1: Novas configurações cluster de tarefas definidas em vários mapeamentos de recurso 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 resources
em targets
para definir as configurações para o job_cluster_key
denominado my-cluster
:
# ...
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
new_cluster:
spark_version: 13.3.x-scala2.12
targets:
development:
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
new_cluster:
node_type_id: n2-highmem-4
num_workers: 1
# ...
Quando você executa databricks bundle validate
para este exemplo, o gráfico resultante é o seguinte:
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"job_clusters": [
{
"job_cluster_key": "my-cluster",
"new_cluster": {
"node_type_id": "n2-highmem-4",
"num_workers": 1,
"spark_version": "13.3.x-scala2.12"
}
}
],
"...": "..."
}
}
}
}
Exemplo 2: Novas configurações cluster de tarefas conflitantes definidas em vários mapeamentos de recurso
Neste exemplo, spark_version
e num_workers
são definidos no mapeamento de nível superior resources
e no mapeamento resources
em targets
. Neste exemplo, spark_version
e num_workers
no mapeamento resources
em targets
têm precedência sobre spark_version
e num_workers
no mapeamento de nível superior resources
, para definir as configurações para o job_cluster_key
denominado my-cluster
:
# ...
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
new_cluster:
spark_version: 13.3.x-scala2.12
node_type_id: n2-highmem-4
num_workers: 1
targets:
development:
resources:
jobs:
my-job:
name: my-job
job_clusters:
- job_cluster_key: my-cluster
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:
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"job_clusters": [
{
"job_cluster_key": "my-cluster",
"new_cluster": {
"node_type_id": "n2-highmem-4",
"num_workers": 2,
"spark_version": "12.2.x-scala2.12"
}
}
],
"...": "..."
}
}
}
}
Exemplo 3: configurações cluster de pipeline definidas em vários mapeamentos de recurso e sem conflitos de configuração
Neste exemplo, node_type_id
no mapeamento de nível superior resources
é combinado com num_workers
no mapeamento resources
em targets
para definir as configurações para o label
denominado default
:
# ...
resources:
pipelines:
my-pipeline:
clusters:
- label: default
node_type_id: n2-highmem-4
targets:
development:
resources:
pipelines:
my-pipeline:
clusters:
- label: default
num_workers: 1
# ...
Quando você executa databricks bundle validate
para este exemplo, o gráfico resultante é o seguinte:
{
"...": "...",
"resources": {
"pipelines": {
"my-pipeline": {
"clusters": [
{
"label": "default",
"node_type_id": "n2-highmem-4",
"num_workers": 1
}
],
"...": "..."
}
}
}
}
Exemplo 4: Configurações cluster pipeline conflitantes definidas em vários mapeamentos de recurso
Neste exemplo, num_workers
é definido tanto no mapeamento de nível superior resources
quanto no mapeamento resources
em targets
. num_workers
no mapeamento resources
em targets
tem precedência sobre num_workers
no mapeamento de nível superior resources
, para definir as configurações para o label
denominado default
:
# ...
resources:
pipelines:
my-pipeline:
clusters:
- label: default
node_type_id: n2-highmem-4
num_workers: 1
targets:
development:
resources:
pipelines:
my-pipeline:
clusters:
- label: default
num_workers: 2
# ...
Quando você executa databricks bundle validate
para este exemplo, o gráfico resultante é o seguinte:
{
"...": "...",
"resources": {
"pipelines": {
"my-pipeline": {
"clusters": [
{
"label": "default",
"node_type_id": "n2-highmem-4",
"num_workers": 2
}
],
"...": "..."
}
}
}
}
Substituição de configurações de tarefasJob
Você pode usar o mapeamento tasks
dentro de uma definição de Job para join as configurações de tarefa de Job em um mapeamento resources
de nível superior com as configurações de tarefa de Job em um mapeamento targets
, por exemplo:
# ...
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 de nível superior resources
e o mapeamento targets
para a mesma tarefa, o task_key
dos mapeamentos de tarefas deve ser definido com o mesmo valor.
Se qualquer configuração de tarefa de trabalho for definida no mapeamento de nível superior resources
e no mapeamento targets
para o mesmo task
, a configuração no mapeamento targets
terá precedência sobre a configuração no mapeamento de nível superior resources
.
Exemplo 1: Configurações de tarefa Job definidas em vários mapeamentos de recurso e sem conflitos de configuração
Neste exemplo, spark_version
no mapeamento de nível superior resources
é 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
:
# ...
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: n2-highmem-4
num_workers: 1
# ...
Quando você executa databricks bundle validate
para este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, por brevidade):
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"tasks": [
{
"new_cluster": {
"node_type_id": "n2-highmem-4",
"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 recurso
Neste exemplo, spark_version
e num_workers
são definidos no mapeamento de nível superior resources
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 de nível superior resources
. Isso define as configurações para o task_key
chamado my-task
(reticências indicam conteúdo omitido, por 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: n2-highmem-4
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:
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"tasks": [
{
"new_cluster": {
"node_type_id": "n2-highmem-4",
"num_workers": 2,
"spark_version": "12.2.x-scala2.12"
},
"task_key": "my-task"
}
],
"...": "..."
}
}
}
}