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

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

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

Para trabalhos, use o job_cluster_key mapeamento dentro de uma definição de trabalho para unir as configurações de cluster em um mapeamento de nível resources superior com as configurações de cluster em um targets mapeamento, 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 nível resources superior e no targets mapeamento para o mesmo job_cluster_key, a configuração no targets mapeamento terá precedência sobre a configuração no mapeamento de nível resources superior.

Para pipelines Delta Live Tables, use o label mapeamento dentro cluster de uma definição de pipeline para unir as configurações de cluster em um mapeamento de nível resources superior com as configurações de cluster em um targets mapeamento, 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 nível resources superior e no targets mapeamento para o mesmo label, a configuração no targets mapeamento terá precedência sobre a configuração no mapeamento de nível resources 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 resources superior é combinado com node_type_id e num_workers no resources mapeamento em targets para definir as configurações para o job_cluster_key nomeado 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 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: Conflitantes novas configurações de cluster de trabalho definidas em vários mapeamentos de recursos

Neste exemplo, spark_versione são definidos no mapeamento de nível resources superior e no resources mapeamento em targetsnum_workers . Neste exemplo, e no mapeamento em targets ter precedência sobre spark_version e num_workers no mapeamento de nível resources superior, para definir as configurações para o job_cluster_key nomeado my-cluster (reticências indicam conteúdo omitido, para brevidade):resourcesnum_workersspark_version

# ...
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 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 de nível resources superior é combinado com num_workers no resources mapeamento em targets 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

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

Quando você executa databricks bundle validate 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 tanto no mapeamento de nível resources superior quanto no resources mapeamento em targets. num_workersresources No mapeamento em targets Ter precedência sobre num_workers no mapeamento de nível resources 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 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
          }
        ],
        "...": "..."
      }
    }
  }
}