Compartilhar via


Substituir as configurações de cluster nos Pacotes de Ativos do Databricks

Este artigo descreve como substituir as configurações dos clusters do Azure Databricks nos Pacotes de Ativos do Databricks. Veja O que são pacotes de ativos do Databricks?

Nos arquivos de configuração de pacotedo Azure Databricks , você pode unir as configurações de cluster em um mapeamento de nível superior com as configurações de cluster em um mapeamento , da seguinte maneira.

Para trabalhos, use o mapeamento job_cluster_key em uma definição de trabalho para unir as configurações do cluster em um mapeamento resources de nível superior às configurações do cluster em um mapeamento targets, por exemplo (para simplificar, as reticências indicam um conteúdo omitido):

# ...
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 resources de nível superior e no mapeamento de targets para o mesmo job_cluster_key, a configuração no mapeamento de targets terá precedência sobre a configuração no mapeamento de resources de nível superior.

Para os pipelines do Delta Live Tables, use o mapeamento label dentro do cluster de uma definição de pipeline para unir as configurações do cluster em um mapeamento resources de nível superior com as configurações do cluster em um mapeamento targets, por exemplo (para simplificar, as reticências indicam um conteúdo omitido):

# ...
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 resources de nível superior e no mapeamento de targets para o mesmo label, a configuração no mapeamento de targets terá precedência sobre a configuração no mapeamento de resources de nível superior.

Exemplo 1: novas configurações de cluster 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 resources em targets para definir as configurações para job_cluster_key chamado my-cluster (para simplificar, as reticências indicam um conteúdo omitido):

# ...
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: Standard_DS3_v2
                num_workers: 1
          # ...

Quando você executa databricks bundle validate para esse exemplo, o grafo resultante é o seguinte (para simplificar, as reticências indicam um conteúdo omitido):

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "job_clusters": [
          {
            "job_cluster_key": "my-cluster",
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 1,
              "spark_version": "13.3.x-scala2.12"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemplo 2: Configurações conflitantes do novo cluster de trabalho definidas em vários mapeamentos de recursos

Neste exemplo, spark_versione num_workers são definidos no mapeamento de resources de nível superior e no mapeamento de 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 resources de nível superior, para definir as configurações do job_cluster_key nomeado my-cluster (as reticências indicam conteúdo omitido, para fins de brevidade):

# ...
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: Standard_DS3_v2
            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 esse exemplo, o grafo resultante é o seguinte (para simplificar, as reticências indicam um conteúdo omitido):

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "job_clusters": [
          {
            "job_cluster_key": "my-cluster",
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 2,
              "spark_version": "12.2.x-scala2.12"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemplo 3: Configurações de cluster de pipeline definidas em vários mapeamentos de recursos e sem conflitos de configurações

Neste exemplo, node_type_id no mapeamento resources de nível superior é combinado com num_workers no mapeamento resources em targets para definir as configurações para o label chamado default (para simplificar, as reticências indicam um conteúdo omitido):

# ...
resources:
  pipelines:
    my-pipeline:
      clusters:
        - label: default
          node_type_id: Standard_DS3_v2

targets:
  development:
    resources:
      pipelines:
        my-pipeline:
          clusters:
            - label: default
              num_workers: 1
          # ...

Quando você executa databricks bundle validate para esse exemplo, o grafo resultante é o seguinte (para simplificar, as reticências indicam um conteúdo omitido):

{
  "...": "...",
  "resources": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 1
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemplo 4: Configurações conflitantes de cluster de pipeline definidas em vários mapeamentos de recursos

Neste exemplo, num_workers é definido no mapeamento de resources de nível superior e no mapeamento de resources em targets. num_workers no mapeamento resources em targets tem precedência sobre num_workers no mapeamento resources de nível superior, para definir as configurações para o label chamado default (para simplificar, as reticências indicam um conteúdo omitido):

# ...
resources:
  pipelines:
    my-pipeline:
      clusters:
        - label: default
          node_type_id: Standard_DS3_v2
          num_workers: 1

targets:
  development:
    resources:
      pipelines:
        my-pipeline:
          clusters:
            - label: default
              num_workers: 2
          # ...

Quando você executa databricks bundle validate para esse exemplo, o grafo resultante é o seguinte (para simplificar, as reticências indicam um conteúdo omitido):

{
  "...": "...",
  "resources": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 2
          }
        ],
        "...": "..."
      }
    }
  }
}