Substituir configurações clusters em pacotes ativos do Databricks

Este artigo descreve como substituir as configurações dos clusters Databricks em Databricks ativo Bundles. Consulte O que são pacotes Databricks ativos?

Nos arquivos de configuração do pacote do Databricks, você pode join as configurações clusters em um mapeamento resources de nível superior com as configurações clusters em um mapeamento targets, como segue.

Para Job, use o mapeamento job_cluster_key em uma definição Job para join as configurações clusters em um mapeamento resources de nível superior com as configurações clusters 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>:
      # ...
      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 alguma configuração clusters for definida no mapeamento resources de nível superior e no mapeamento targets para o mesmo job_cluster_key, a configuração no mapeamento targets terá precedência sobre a configuração no nível superior resources mapeamento.

Para pipelines Delta Live Tables, use o mapeamento label dentro do cluster de uma definição de pipeline para join as configurações clusters em um mapeamento resources de nível superior com as configurações clusters em um mapeamento targets, por exemplo (elipses indicar conteúdo omitido, por questões de brevidade):

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

Exemplo 1: Novas configurações clusters Job 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 para o job_cluster_key denominado my-cluster ( reticências indicam conteúdo omitido, por questões 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

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          job_clusters:
            - job_cluster_key: my-cluster
              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": {
        "job_clusters": [
          {
            "job_cluster_key": "my-cluster",
            "new_cluster": {
              "node_type_id": "i3.xlarge",
              "num_workers": 1,
              "spark_version": "13.3.x-scala2.12"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Exemplo 2: Novas configurações conflitantes clusters Job 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. 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 job_cluster_key denominado my-cluster (reticências indicam conteúdo omitido, por questões 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: i3.xlarge
            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 (as reticências indicam o conteúdo omitido, por questões de brevidade):

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

Exemplo 3: Configurações clusters 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 denominado default (reticências indicam conteúdo omitido , para ser breve):

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

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 (as reticências indicam o conteúdo omitido, por questões de brevidade):

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

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

Neste exemplo, num_workers é definido no mapeamento resources de nível superior e no mapeamento 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 denominado default (reticências indicam conteúdo omitido, por questões de brevidade ):

# ...
resources:
  pipelines:
    my-pipeline:
      clusters:
        - label: default
          node_type_id: i3.xlarge
          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 (as reticências indicam o conteúdo omitido, por questões de brevidade):

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