Compartir a través de


Recursos de Conjuntos de recursos de Databricks

Databricks Asset Bundles permite especificar información sobre los recursos de Azure Databricks utilizados por el paquete en el mapeo de resources en la configuración del paquete. Consulte asignación de recursos y referencia de clave de recursos.

En este artículo se describen los tipos de recursos admitidos para agrupaciones y se proporcionan detalles y un ejemplo para cada tipo admitido. Para obtener ejemplos adicionales, consulte Ejemplos de configuración de paquetes.

Consejo (if the meaning of "Tip" is advice or suggestion)

Para generar YAML para cualquier recurso existente, use el comando databricks bundle generate. Consulte Generación de un archivo de configuración de agrupación.

Recursos compatibles

En la tabla siguiente se enumeran los tipos de recursos admitidos para las agrupaciones. Algunos recursos se pueden crear definiendo en una agrupación e implementando la agrupación, y algunos recursos solo admiten hacer referencia a un recurso existente para incluirlo en la agrupación.

Los recursos se definen mediante la API de REST de Databricks correspondiente y la carga útil de solicitud de operación de creación del objeto, donde los campos admitidos del objeto, expresados como YAML, son las propiedades admitidas del recurso. Los vínculos a la documentación de las cargas correspondientes de cada recurso se enumeran en la tabla .

Consejo (if the meaning of "Tip" is advice or suggestion)

El comando databricks bundle validate devuelve advertencias si se encuentran propiedades de recursos desconocidas en los archivos de configuración de agrupación.

Recurso Creación de soporte técnico Objeto de API REST correspondiente
app Objeto de aplicación
cluster Cluster object
panel Objeto de panel
experimento objeto del experimento
trabajo Job object
el modelo (heredado) Objeto del Modelo (heredado)
model_serving_endpoint Model serving endpoint object
pipeline [Pipeline object]](https://docs.databricks.com/api/azure/workspace/pipelines/create)
quality_monitor Quality monitor object
registered_model (Unity Catalog) Objeto de modelo registrado
schema (Unity Catalog) Schema object
volume (Unity Catalog) Volume object

app

El recurso de aplicación define una aplicación de Databricks. Para obtener información sobre las aplicaciones de Databricks, consulte ¿Qué son las aplicaciones de Databricks?.

Consejo (if the meaning of "Tip" is advice or suggestion)

Puede inicializar una agrupación con una aplicación Streamlit Databricks mediante el siguiente comando:

databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app

Para agregar una aplicación, especifique los campos de objeto que definen la aplicación, así como lo siguiente:

  • source_code_path: la ruta de acceso local ./app del código fuente de la aplicación Databricks. Este campo es obligatorio.
  • config: los comandos de configuración de la aplicación y las variables de entorno. Puede usarlo para especificar diferentes destinos de implementación de aplicaciones.

Ejemplo

En el ejemplo siguiente se crea una aplicación denominada my_app que administra un trabajo creado por la agrupación:

resources:
  jobs:
    # Define a job in the bundle
    hello_world:
      name: hello_world
      tasks:
        - task_key: task
          spark_python_task:
            python_file: ../src/main.py
          environment_key: default

      environments:
        - environment_key: default
          spec:
            client: "1"

  # Define an app that manages the job in the bundle
  apps:
    job_manager:
      name: "job_manager_app"
      description: "An app which manages a job created by this bundle"

      # The location of the source code for the app
      source_code_path: ../src/app

      # The configuration for running the app
      config:
        command:
          - flask
          - --app
          - app
          - run
          - --debug
        env:
          - name: JOB_ID
            value: ${resources.jobs.hello_world.id}

      # The resources in the bundle which this app has access to. This binds the resource in the app with the DABs resource.
      resources:
        - name: "app-job"
          job:
            id: ${resources.jobs.hello_world.id}
            permission: "CAN_MANAGE_RUN"

Para obtener el paquete completo de ejemplos de la app de Databricks, consulte el repositorio de GitHub bundle-examples.

cluster

El recurso de clúster define un clúster de propósito general.

Ejemplo

En el ejemplo siguiente se crea un clúster denominado my_cluster y se establece que como el clúster que se va a usar para ejecutar el cuaderno en my_job:

bundle:
  name: clusters

resources:
  clusters:
    my_cluster:
      num_workers: 2
      node_type_id: "i3.xlarge"
      autoscale:
        min_workers: 2
        max_workers: 7
      spark_version: "13.3.x-scala2.12"
      spark_conf:
        "spark.executor.memory": "2g"

  jobs:
    my_job:
      tasks:
        - task_key: test_task
          notebook_task:
            notebook_path: "./src/my_notebook.py"

dashboard

El recurso de panel permite administrar paneles de AI/BI como un conjunto. Para obtener información sobre los paneles de AI/BI, consulte Paneles.

Ejemplo

En el siguiente ejemplo se incluye e implementa el panel de ejemplo Análisis de viajes en taxi de Nueva York en el área de trabajo de Databricks.

resources:
  dashboards:
    nyc_taxi_trip_analysis:
      display_name: "NYC Taxi Trip Analysis"
      file_path: ../src/nyc_taxi_trip_analysis.lvdash.json
      warehouse_id: ${var.warehouse_id}

Si usa la interfaz de usuario para modificar el panel, las modificaciones realizadas a través de la interfaz de usuario no se aplican al archivo JSON del panel en el lote local a menos que lo actualice explícitamente mediante bundle generate. Puede usar la opción --watch para sondear y recuperar continuamente los cambios en el panel. Consulte Generación de un archivo de configuración de agrupación.

Además, si intenta implementar una agrupación que contiene un archivo JSON de panel diferente al del área de trabajo remota, se producirá un error. Para forzar la implementación y sobrescribir el panel en el área de trabajo remota por el local, utilice la opción --force. Consulte Implementación de una agrupación.

experimento

El recurso de experimento permite definir experimentos de MLflow en un conjunto. Para obtener información sobre los experimentos de MLflow, consulte Organizar ejecuciones de entrenamiento con experimentos de MLflow.

Ejemplo

En el ejemplo siguiente se define un experimento que todos los usuarios pueden ver:

resources:
  experiments:
    experiment:
      name: my_ml_experiment
      permissions:
        - level: CAN_READ
          group_name: users
      description: MLflow experiment used to track runs

trabajo

El recurso de trabajo permite definir trabajos y sus tareas correspondientes en su conjunto. Para obtener información sobre los trabajos, consulte Introducción a la orquestación en Databricks. Para ver un tutorial que usa una plantilla de Conjuntos de recursos de Databricks para crear un trabajo, consulte Desarrollo de un trabajo en Azure Databricks mediante Conjuntos de recursos de Databricks.

Ejemplo

En el ejemplo siguiente se define un trabajo con la clave de recurso hello-job con una tarea de cuaderno:

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          notebook_task:
            notebook_path: ./hello.py

Para obtener información sobre cómo definir tareas de trabajo e invalidar la configuración del trabajo, consulte Agregar tareas a los trabajos en Conjuntos de recursos de Databricks, Invalidar la configuración de tareas de trabajo en Conjuntos de recursos de Databricksy Invalidar la configuración del clúster en Conjuntos de recursos de Databricks.

modelo (heredado)

El recurso de modelo permite definir modelos heredados en conjuntos. Databricks recomienda que use modelos registrados de Unity Catalog en su lugar.

model_serving_endpoint

El recurso model_serving_endpoint permite definir puntos de conexión de modelo de servicio. Consulte Administración de puntos de conexión de modelo de servicio.

Ejemplo

En el ejemplo siguiente se define un modelo de Unity Catalog que sirve el punto de conexión:

resources:
  model_serving_endpoints:
    uc_model_serving_endpoint:
      name: "uc-model-endpoint"
      config:
        served_entities:
        - entity_name: "myCatalog.mySchema.my-ads-model"
          entity_version: "10"
          workload_size: "Small"
          scale_to_zero_enabled: "true"
        traffic_config:
          routes:
          - served_model_name: "my-ads-model-10"
            traffic_percentage: "100"
      tags:
      - key: "team"
        value: "data science"

quality_monitor (Unity Catalog)

El recurso quality_monitor permite definir un monitor de tabla de Unity Catalog. Para obtener información sobre los monitores, consulte Supervisión de la calidad del modelo y el estado del punto de conexión.

Ejemplo

En el ejemplo siguiente se define un monitor de calidad:

resources:
  quality_monitors:
    my_quality_monitor:
      table_name: dev.mlops_schema.predictions
      output_schema_name: ${bundle.target}.mlops_schema
      assets_dir: /Users/${workspace.current_user.userName}/databricks_lakehouse_monitoring
      inference_log:
        granularities: [1 day]
        model_id_col: model_id
        prediction_col: prediction
        label_col: price
        problem_type: PROBLEM_TYPE_REGRESSION
        timestamp_col: timestamp
      schedule:
        quartz_cron_expression: 0 0 8 * * ? # Run Every day at 8am
        timezone_id: UTC

registered_model (Unity Catalog)

El recurso de modelo registrado permite definir modelos en el catálogo de Unity. Para obtener información sobre modelos registrados de Unity Catalog, consulte Administración del ciclo de vida del modelo en Unity Catalog.

Ejemplo

En el ejemplo siguiente se define un modelo registrado en el catálogo de Unity:

resources:
  registered_models:
      model:
        name: my_model
        catalog_name: ${bundle.target}
        schema_name: mlops_schema
        comment: Registered model in Unity Catalog for ${bundle.target} deployment target
        grants:
          - privileges:
              - EXECUTE
            principal: account users

pipeline

El recurso de canalización permite crear canalizaciones de Delta Live Tables. Para obtener información sobre las canalizaciones, consulte ¿Qué es Delta Live Tables?. Para ver un tutorial que utiliza la plantilla de Conjuntos de recursos de Databricks para crear una canalización, consulte Desarrollo de canalizaciones de Delta Live Tables con Conjuntos de recursos de Databricks.

Ejemplo

En el ejemplo siguiente se define una canalización con la clave de recurso hello-pipeline:

resources:
  pipelines:
    hello-pipeline:
      name: hello-pipeline
      clusters:
        - label: default
          num_workers: 1
      development: true
      continuous: false
      channel: CURRENT
      edition: CORE
      photon: false
      libraries:
        - notebook:
            path: ./pipeline.py

schema (Unity Catalog)

El tipo de recurso de esquema permite definir esquemas de Unity Catalog para tablas y otros recursos de los flujos de trabajo y canalizaciones creados como parte de un conjunto. Un esquema, diferente de otros tipos de recursos, tiene las siguientes limitaciones:

  • El propietario de un recurso de esquema siempre es el usuario de implementación y no se puede cambiar. Si se especifica run_as en la agrupación, se omitirán las operaciones en el esquema.
  • Solo los campos admitidos por la API de creación de objetos de esquema correspondiente están disponibles para el recurso schema. Por ejemplo, enable_predictive_optimization no se admite, ya que solo está disponible en la API de actualización.

Ejemplos

En el ejemplo siguiente se define una canalización con la clave de recurso my_pipeline que crea un esquema de Catálogo de Unity con la clave my_schema como destino:

resources:
  pipelines:
    my_pipeline:
      name: test-pipeline-{{.unique_id}}
      libraries:
        - notebook:
            path: ./nb.sql
      development: true
      catalog: main
      target: ${resources.schemas.my_schema.id}

  schemas:
    my_schema:
      name: test-schema-{{.unique_id}}
      catalog_name: main
      comment: This schema was created by DABs.

Databricks Asset Bundles no admite un mapeo de permisos de nivel superior, por lo que si desea establecer permisos para un esquema, defina los permisos para el esquema dentro del mapeo de schemas. Para obtener más información sobre las concesiones, vea Mostrar, conceder y revocar privilegios.

En el ejemplo siguiente se define un esquema de catálogo de Unity con concesiones:

resources:
  schemas:
    my_schema:
      name: test-schema
      grants:
        - principal: users
          privileges:
            - SELECT
        - principal: my_team
          privileges:
            - CAN_MANAGE
      catalog_name: main

volume (Unity Catalog)

El tipo de recurso de volumen permite definir y crear volúmenes de Unity Catalog como parte de un conjunto. Al implementar un paquete con un volumen definido, tómese en cuenta que:

  • No se puede hacer referencia a un volumen en artifact_path del conjunto hasta que exista en el área de trabajo. Por lo tanto, si desea usar Conjuntos de recursos de Databricks para crear el volumen, primero debe definir el volumen en el paquete, implementarlo para crear el volumen, y a continuación, hacer referencia a él en artifact_path en las implementaciones posteriores.
  • Los volúmenes del paquete no llevan el prefijo dev_${workspace.current_user.short_name} cuando el destino de implementación tiene configurado mode: development. Sin embargo, puede configurar manualmente este prefijo. Consulte Valores preestablecidos personalizados.

Ejemplo

En el ejemplo siguiente se crea un volumen de catálogo de Unity con la clave my_volume:

resources:
  volumes:
    my_volume:
      catalog_name: main
      name: my_volume
      schema_name: my_schema

Para obtener un paquete de ejemplo que ejecuta un trabajo que escribe en un archivo en el volumen de Unity Catalog, consulte el repositorio de GitHub bundle-examples.