Partilhar via


Substituir configurações de cluster em pacotes de recursos Databricks

Este artigo descreve como alterar as configurações para clusters do Azure Databricks no Databricks Asset Bundles. Consulte O que são Databricks Asset Bundles?

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

Para trabalhos, use o mapeamento de job_cluster_key dentro de uma definição de trabalho para unir as configurações de cluster em um mapeamento de resources de nível superior com as configurações de cluster em um mapeamento de targets, por exemplo (reticências indicam conteúdo omitido, para 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 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 pipelines Delta Live Tables, use o mapeamento label no cluster de uma definição de pipeline para combinar as configurações de cluster num mapeamento de topo resources com as configurações de cluster num mapeamento de targets, por exemplo (reticências indicam conteúdo omitido, para 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 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 resources de nível superior é combinado com node_type_id e num_workers no mapeamento de resources em targets para definir as configurações do job_cluster_key chamado my-cluster (reticências indicam conteúdo omitido, para 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: Standard_DS3_v2
                num_workers: 1
          # ...

Quando você executa databricks bundle validate para este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, para brevidade):

{
  "...": "...",
  "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 de clusters de trabalho novas e conflitantes definidas em vários mapeamentos de recursos

Neste exemplo, spark_versione num_workers são definidas no mapeamento de resources de nível superior e no mapeamento de resources em targets. Neste exemplo, 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, para definir as configurações para o job_cluster_key chamado my-cluster (reticências indicam conteúdo omitido, para 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 este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, para brevidade):

{
  "...": "...",
  "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 superior resources é combinado com num_workers no mapeamento resources em targets para definir as configurações para o label nomeado default (as reticências indicam conteúdo omitido para brevidade):

# ...
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 este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, para brevidade):

{
  "...": "...",
  "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 de resources em targets têm precedência sobre num_workers no mapeamento de resources de nível superior, para definir as configurações para o label nomeado default (reticências indicam conteúdo omitido, para brevidade):

# ...
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 este exemplo, o gráfico resultante é o seguinte (reticências indicam conteúdo omitido, para brevidade):

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