Compartir vía


Invalidación de la configuración del clúster en agrupaciones de recursos de Databricks

En este artículo, se describe cómo invalidar la configuración de clústeres de Azure Databricks en agrupaciones de recursos de Databricks. Consulte ¿Qué son las agrupaciones de recursos de Databricks?

En los archivos de configuración de agrupación de Azure Databricks, puede unir la configuración del clúster en una asignación de nivel superior resources con la configuración del clúster en una asignación targets, como se indica a continuación.

Para los trabajos, use la asignación job_cluster_key dentro de una definición de trabajo para unir la configuración del clúster en una asignación de nivel superior resources con la configuración del clúster en una asignación targets; por ejemplo (los puntos suspensivos indican contenido omitido, por motivos de brevedad):

# ...
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.
          # ...

Si se define cualquier configuración de clúster en la asignación de nivel superior resources y la asignación targets para la misma job_cluster_key, la configuración de la asignación targets tiene prioridad sobre la configuración de la asignación de nivel superior resources.

Para las canalizaciones de Delta Live Tables, use la asignación label dentro de la cluster de una definición de canalización para unir la configuración del clúster en una asignación de nivel superior resources con la configuración del clúster en una asignación targets; por ejemplo (los puntos suspensivos indican contenido omitido, por motivos de brevedad):

# ...
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.
          # ...

Si se define cualquier configuración de clúster en la asignación de nivel superior resources y la asignación targets para la misma label, la configuración de la asignación targets tiene prioridad sobre la configuración de la asignación de nivel superior resources.

Ejemplo 1: Nueva configuración del clúster de trabajo definida en varias asignaciones de recursos y sin conflictos de configuración

En este ejemplo, spark_version en la asignación de nivel superior resources se combina con node_type_id y num_workers en la asignación resources de targets para definir la configuración de los job_cluster_key llamados my-cluster (los puntos suspensivos indican contenido omitido, por brevedad):

# ...
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
          # ...

Cuando ejecuta databricks bundle validate para este ejemplo, el gráfico resultante es como el que se muestra a continuación (los puntos suspensivos indican contenido omitido, para abreviar):

{
  "...": "...",
  "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"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Ejemplo 2: Configuración del clúster de trabajo en conflicto definida en varias asignaciones de recursos

En este ejemplo, spark_version y num_workers se definen en la asignación de nivel superior resources y en la asignación resources en targets. En este ejemplo, spark_version y num_workers en la asignación resources de targets tienen prioridad sobre spark_version y num_workers en la asignación de nivel superior resources, para definir la configuración de los job_cluster_key llamados my-cluster (los puntos suspensivos indican contenido omitido, por motivos de brevedad):

# ...
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
          # ...

Cuando ejecuta databricks bundle validate para este ejemplo, el gráfico resultante es como el que se muestra a continuación (los puntos suspensivos indican contenido omitido, para abreviar):

{
  "...": "...",
  "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"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Ejemplo 3: Configuración del clúster canalización definida en varias asignaciones de recursos y sin conflictos de configuración

En este ejemplo, node_type_id en la asignación de nivel superior resources se combina con num_workers en la asignación resources de targets para definir la configuración de los label llamados default (los puntos suspensivos indican contenido omitido, por brevedad):

# ...
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
          # ...

Cuando ejecuta databricks bundle validate para este ejemplo, el gráfico resultante es como el que se muestra a continuación (los puntos suspensivos indican contenido omitido, para abreviar):

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

Ejemplo 4: Configuración del clúster de canalización en conflicto definida en varias asignaciones de recursos

En este ejemplo, num_workers se define en la asignación de nivel resources superior y en la asignación resources en targets. num_workers en la asignación resources de targets tienen prioridad sobre num_workers en la asignación de nivel superior resources, para definir la configuración de los label llamados default (los puntos suspensivos indican contenido omitido, por motivos de brevedad):

# ...
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
          # ...

Cuando ejecuta databricks bundle validate para este ejemplo, el gráfico resultante es como el que se muestra a continuación (los puntos suspensivos indican contenido omitido, para abreviar):

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