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 enartifact_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 configuradomode: 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.