Compartir a través de


Configuración de agrupación de recursos de Databricks

En este artículo se describe la sintaxis de los archivos de configuración de Asset Bundle de Databricks, que definen Conjuntos de recursos de Databricks. Consulte ¿Qué son los conjuntos de recursos de Databricks?

Para crear y trabajar con agrupaciones, consulte Desarrollo de conjuntos de recursos de Databricks.

Para obtener referencia de configuración de agrupación, consulte Referencia de configuración.

databricks.yml

Una agrupación debe contener un archivo de configuración (y solo uno) denominado databricks.yml en la raíz de la carpeta del proyecto de agrupación. databricks.yml es el archivo de configuración principal que define un paquete, pero puede hacer referencia a otros archivos de configuración, como los archivos de configuración de recursos, en la asignación include. La configuración de agrupación se expresa en YAML. Para obtener más información sobre YAML, consulte la especificación oficial de YAML.

La más sencilla databricks.yml define el nombre del lote, que es una asignación de nivel superior necesaria y una implementación de destino.

bundle:
  name: my_bundle

targets:
  dev:
    default: true

Para obtener más información sobre todas las asignaciones de nivel superior, consulte Referencia de configuración.

Sugerencia

La compatibilidad de Python con Conjuntos de recursos de Databricks le permite definir recursos en Python. Consulte Configuración de agrupación en Python.

Especificación

La siguiente especificación de YAML proporciona claves de configuración de nivel superior para Conjuntos de recursos de Databricks. Para obtener una referencia de configuración completa, consulte Referencia de configuración y Recursos de Conjuntos de recursos de Databricks.

# This is the default bundle configuration if not otherwise overridden in
# the "targets" top-level mapping.
bundle: # Required.
  name: string # Required.
  databricks_cli_version: string
  cluster_id: string
  deployment: Map
  git:
    origin_url: string
    branch: string

# This is the identity to use to run the bundle
run_as:
  - user_name: <user-name>
  - service_principal_name: <service-principal-name>

# These are any additional configuration files to include.
include:
  - '<some-file-or-path-glob-to-include>'
  - '<another-file-or-path-glob-to-include>'

# These are any scripts that can be run.
scripts:
  <some-unique-script-name>:
    content: string

# These are any additional files or paths to include or exclude.
sync:
  include:
    - '<some-file-or-path-glob-to-include>'
    - '<another-file-or-path-glob-to-include>'
  exclude:
    - '<some-file-or-path-glob-to-exclude>'
    - '<another-file-or-path-glob-to-exclude>'
  paths:
    - '<some-file-or-path-to-synchronize>'

# These are the default artifact settings if not otherwise overridden in
# the targets top-level mapping.
artifacts:
  <some-unique-artifact-identifier>:
    build: string
    dynamic_version: boolean
    executable: string
    files:
      - source: string
    path: string
    type: string

# These are for any custom variables for use throughout the bundle.
variables:
  <some-unique-variable-name>:
    description: string
    default: string or complex
    lookup: Map
    type: string # The only valid value is "complex" if the variable is a complex variable, otherwise do not define this key.

# These are the workspace settings if not otherwise overridden in
# the targets top-level mapping.
workspace:
  artifact_path: string
  host: string
  profile: string
  resource_path: string
  root_path: string
  state_path: string

# These are the permissions to apply to resources defined
# in the resources mapping.
permissions:
  - level: <permission-level>
    group_name: <unique-group-name>
  - level: <permission-level>
    user_name: <unique-user-name>
  - level: <permission-level>
    service_principal_name: <unique-principal-name>

# These are the resource settings if not otherwise overridden in
# the targets top-level mapping.
resources:
  alerts:
    <unique-alert-name>:
      # alert settings
  apps:
    <unique-app-name>:
      # app settings
  catalogs:
    <unique-catalog-name>:
      # catalog settings
  clusters:
    <unique-cluster-name>:
      # cluster settings
  dashboards:
    <unique-dashboard-name>:
      # dashboard settings
  database_catalogs:
    <unique-database-catalog-name>:
      # database catalog settings
  database_instances:
    <unique-database-instance-name>:
      # database instance settings
  experiments:
    <unique-experiment-name>:
      # experiment settings
  jobs:
    <unique-job-name>:
      # job settings
  model_serving_endpoints:
    <unique-model-serving-endpoint-name>:
    # model_serving_endpoint settings
  pipelines:
    <unique-pipeline-name>:
      # pipeline settings
  postgres_branches:
    <unique-postgres-branch-name>:
      # postgres branch settings
  postgres_endpoints:
    <unique-postgres-endpoint-name>:
      # postgres endpoint settings
  postgres_projects:
    <unique-postgres-project-name>:
      # postgres project settings
  quality_monitors:
    <unique-quality-monitor-name>:
    # quality monitor settings
  registered_models:
    <unique-registered-model-name>:
    # registered model settings
  schemas:
    <unique-schema-name>:
      # schema settings
  secret_scopes:
    <unique-secret-scope-name>:
      # secret scopes settings
  sql_warehouses:
    <unique-sql-warehouse-name>:
      # sql warehouse settings
  synced_database_tables:
    <unique-synced-database-table-name>:
      # synced database table settings
  volumes:
    <unique-volume-name>:
    # volumes settings

# These are the targets to use for deployments and workflow runs. One and only one of these
# targets can be set to "default: true".
targets:
  <some-unique-programmatic-identifier-for-this-target>:
    artifacts:
      # artifact build settings for this target
    bundle:
      # bundle settings for this target
    default: boolean
    git: Map
    mode: string
    permissions:
      # permissions for this target
    presets:
      <preset>: <value>
    resources:
      # resource settings for this target
    sync:
      # sync settings for this target
    variables:
      <defined-variable-name>: <non-default-value> # value for this target
    workspace:
      # workspace settings for this target
    run_as:
      # run_as settings for this target

Ejemplos

Esta sección contiene algunos ejemplos básicos que le ayudarán a comprender cómo funcionan las agrupaciones y cómo estructurar la configuración.

Nota:

Para ver ejemplos de configuración que muestran las características de agrupación y los casos de uso comunes de agrupación, consulte Ejemplos de configuración de agrupación y el Repositorio de ejemplos de agrupación en GitHub.

La siguiente configuración de agrupación de ejemplo especifica un archivo local denominado hello.py que se encuentra en el mismo directorio que el archivo databricks.ymlde configuración de agrupación . Ejecuta este cuaderno como un trabajo mediante el clúster remoto con el id. de clúster especificado. La dirección URL del área de trabajo remota y las credenciales de autenticación del área de trabajo se leen del perfil de configuración local del llamador denominado DEFAULT.

bundle:
  name: hello-bundle

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          existing_cluster_id: 1234-567890-abcde123
          notebook_task:
            notebook_path: ./hello.py

targets:
  dev:
    default: true

En el ejemplo siguiente se agrega un destino con el nombre prod que utiliza una URL de área de trabajo remota diferente y las credenciales de autenticación del área de trabajo, que se leen de la entrada coincidente .databrickscfg del archivo del llamador con la URL especificada del área de trabajo. Este trabajo ejecuta el mismo cuaderno, pero utiliza un clúster remoto diferente con el ID de clúster especificado.

Nota:

Databricks recomienda usar la asignación host en lugar de la asignación default siempre que sea posible, ya que esto hace que los archivos de configuración de agrupación sean más portátiles. Al establecer la asignación de host, se indica a la CLI de Databricks que busque un perfil coincidente en el archivo .databrickscfg y, a continuación, use los campos de ese perfil para determinar qué tipo de autenticación de Databricks se va a usar. Si existen varios perfiles con un campo coincidente host , debe usar la --profile opción en los comandos de agrupación para especificar un perfil que se va a usar.

Tenga en cuenta que no es necesario declarar la asignación notebook_task dentro de la asignación prod, ya que vuelve a usar la asignación notebook_task dentro de la asignación resources de nivel superior, si la asignación notebook_task no se invalida explícitamente dentro de la asignación prod.

bundle:
  name: hello-bundle

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          existing_cluster_id: 1234-567890-abcde123
          notebook_task:
            notebook_path: ./hello.py

targets:
  dev:
    default: true
  prod:
    workspace:
      host: https://<production-workspace-url>
    resources:
      jobs:
        hello-job:
          name: hello-job
          tasks:
            - task_key: hello-task
              existing_cluster_id: 2345-678901-fabcd456

Use los siguientes comandos de agrupación para validar, implementar y ejecutar este trabajo dentro del dev destino. Para más información sobre el ciclo de vida de un paquete, consulte Desarrollar conjuntos de recursos Databricks.

# Because the "dev" target is set to "default: true",
# you do not need to specify "-t dev":
databricks bundle validate
databricks bundle deploy
databricks bundle run hello_job

# But you can still explicitly specify it, if you want or need to:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev hello_job

Para validar, implementar y ejecutar este trabajo dentro del destino prod en su lugar:

# You must specify "-t prod", because the "dev" target
# is already set to "default: true":
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod hello_job

Para una mayor modularización y mejor reutilización de definiciones y configuraciones en conjuntos, divida la configuración del lote en archivos independientes:

# databricks.yml

bundle:
  name: hello-bundle

include:
  - '*.yml'
# hello-job.yml

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          existing_cluster_id: 1234-567890-abcde123
          notebook_task:
            notebook_path: ./hello.py
# targets.yml

targets:
  dev:
    default: true
  prod:
    workspace:
      host: https://<production-workspace-url>
    resources:
      jobs:
        hello-job:
          name: hello-job
          tasks:
            - task_key: hello-task
              existing_cluster_id: 2345-678901-fabcd456

Recursos adicionales