Ressources des Asset Bundles de Databricks
Databricks Asset Bundles vous permet de spécifier des informations sur les ressources Azure Databricks utilisées par le bundle dans le mappage resources
dans la configuration de l’offre groupée. Consultez la cartographie des ressources ainsi que les références clés des ressources .
Cet article décrit les types de ressources pris en charge pour les offres groupées et fournit des détails et un exemple pour chaque type pris en charge. Pour obtenir d’autres exemples, consultez les exemples de configuration du Bundle .
Conseil
Pour générer YAML pour n’importe quelle ressource existante, utilisez la commande databricks bundle generate
. Consultez Générer un fichier de configuration de pack.
Ressources prises en charge
Le tableau suivant répertorie les types de ressources pris en charge pour les bundles. Certaines ressources peuvent être créées en les définissant dans un bundle et en déployant le bundle, et certaines ressources prennent uniquement en charge le référencement d’une ressource existante à inclure dans le bundle.
Les ressources sont définies à l’aide de l’API REST Databricks correspondante de la charge utile de demande de création de l’objet, où les champs pris en charge de l’objet, exprimés en tant que YAML, sont les propriétés prises en charge de la ressource. Les liens vers la documentation des charges utiles correspondantes de chaque ressource sont répertoriés dans le tableau.
Conseil
La commande databricks bundle validate
retourne des avertissements si des propriétés de ressource inconnues sont trouvées dans les fichiers de configuration de bundle.
Ressource | Créer une prise en charge | Objet API REST correspondant |
---|---|---|
app | ✓ | Objet d’application |
cluster | ✓ | Objet cluster |
tableau de bord | Objet de tableau de bord | |
experiment | ✓ | Objet d'expérience |
travail | ✓ | Objet de tâche |
modèle (ancien) | ✓ | Objet de modèle (hérité) |
model_serving_endpoint | ✓ | Objet de points de terminaison de mise en service de modèles |
pipeline | ✓ | [Objet de pipeline]](https://docs.databricks.com/api/azure/workspace/pipelines/create) |
quality_monitor | ✓ | Objet de moniteur de qualité |
registered_model (Unity Catalog) | ✓ | objet de modèle inscrit |
schéma (Unity Catalog) | ✓ | Objet de schéma |
volume (Unity Catalog) | ✓ | Objet de volume |
application
La ressource d’application définit une application Databricks. Pour plus d’informations sur Databricks Apps, consultez Qu’est-ce que Databricks Apps ?.
Conseil
Vous pouvez initialiser un bundle avec une application Streamlit Databricks à l’aide de la commande suivante :
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app
Pour ajouter une application, spécifiez les champs d’objet qui définissent l’application, ainsi que les éléments suivants :
source_code_path
: Le./app
chemin d’accès local du code source de l’application Databricks. Ce champ est obligatoire.config
- Commandes de configuration d’application et variables d’environnement. Vous pouvez l’utiliser pour spécifier différentes cibles de déploiement d’application.
Exemple
L’exemple suivant crée une application nommée my_app
qui gère un travail créé par le bundle :
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"
Pour l’exemple complet de l’application Databricks, consultez le dépôt GitHub bundle-examples .
cluster
La ressource de cluster définit un cluster à usage général.
Exemple
L’exemple suivant crée un cluster nommé my_cluster
et définit celui-ci comme cluster à utiliser pour exécuter le notebook dans 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
La ressource de tableau de bord vous permet de gérer tableaux de bord IA/BI dans un bundle. Pour plus d’informations sur les tableaux de bord IA/BI, consultez Tableaux de bord.
Exemple
L’exemple suivant inclut et déploie l’exemple de tableau de bord NYC Taxi Trip Analysis sur l’espace de travail 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 vous utilisez l’interface utilisateur pour modifier le tableau de bord, les modifications apportées via l’interface utilisateur ne sont pas appliquées au fichier JSON du tableau de bord dans le bundle local, sauf si vous la mettez explicitement à jour à l’aide de bundle generate
. Vous pouvez utiliser l’option --watch
pour interroger et récupérer en continu les modifications apportées au tableau de bord. Consultez Générer un fichier de configuration de pack.
En outre, si vous tentez de déployer un bundle qui contient un fichier JSON de tableau de bord différent de celui de l’espace de travail distant, une erreur se produit. Pour forcer le déploiement et remplacer le tableau de bord dans l’espace de travail distant avec celui local, utilisez l’option --force
. Consultez Déployer un pack.
expérience
La ressource d’expérience vous permet de définir des expériences MLflow dans un pack. Pour plus d’informations sur les expériences MLflow, consultez Organiser les exécutions d’entraînement avec des expériences MLflow.
Exemple
L’exemple suivant définit une expérience que tous les utilisateurs peuvent afficher :
resources:
experiments:
experiment:
name: my_ml_experiment
permissions:
- level: CAN_READ
group_name: users
description: MLflow experiment used to track runs
travail
La ressource de travail vous permet de définir des travaux et leurs tâches correspondantes dans votre pack. Pour plus d’informations sur les tâches, consultez Vue d’ensemble de l’orchestration sur Databricks. Pour obtenir un didacticiel qui utilise un modèle Databricks Asset Bundles pour créer un travail, consultez Développer un travail sur Azure Databricks à l’aide de Bundles de ressources Databricks.
Exemple
L'exemple suivant définit une tâche avec la clé de ressource hello-job
et une tâche de carnet :
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
notebook_task:
notebook_path: ./hello.py
Pour plus d’informations sur la définition des tâches et la substitution des paramètres de travail, consultez Ajouter des tâches à des travaux dans databricks Asset Bundles, remplacer les paramètres des tâches de travail dans databricks Asset Bundleset Remplacer les paramètres de cluster dans databricks Asset Bundles.
modèle (hérité)
La ressource de modèle vous permet de définir des modèles hérités dans les packs. Databricks vous recommande plutôt d'utiliser les modèles enregistrés dans le catalogue Unity .
model_serving_endpoint
La ressource model_serving_endpoint vous permet de définir des points de terminaison de service de modèles. Consultez Gérer des points de terminaison de service de modèles.
Exemple
L’exemple suivant définit un point de terminaison de service de modèles pour Unity Catalog :
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)
La ressource quality_monitor vous permet de définir un moniteur de table Unity Catalog . Pour plus d’informations sur les systèmes de surveillance, consultez Qualité du modèle de surveillance et santé des points de terminaison.
Exemple
L’exemple suivant définit un moniteur de qualité :
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)
La ressource de modèle inscrite vous permet de définir des modèles dans le catalogue Unity. Pour plus d’informations sur les modèles enregistrés Unity Catalog, consultez Gérer le cycle de vie des modèles dans Unity Catalog.
Exemple
L’exemple suivant définit un modèle inscrit dans le catalogue 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
La ressource de pipeline vous permet de créer des pipelines Delta Live Tables. Pour plus d’informations sur les pipelines, consultez Qu’est-ce que Delta Live Tables ?. Pour obtenir un didacticiel qui utilise le modèle Databricks Asset Bundles pour créer un pipeline, consultez Développer des pipelines Delta Live Tables avec des bundles de ressources Databricks.
Exemple
L’exemple suivant définit un pipeline avec la clé de ressource 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
schéma (Unity Catalog)
Le type de ressource de schéma vous permet de définir des schémas de catalogue Unity pour les tables et autres ressources de vos flux de travail et pipelines créés dans le cadre d’un bundle. Un schéma, différent des autres types de ressources, présente les limitations suivantes :
- Le propriétaire d’une ressource de schéma est toujours l’utilisateur de déploiement et ne peut pas être modifié. Si
run_as
est spécifié dans le bundle, il est ignoré par les opérations sur le schéma. - Seuls les champs pris en charge par l’API de création d’objet Schemas correspondante sont disponibles pour la ressource de schéma. Par exemple,
enable_predictive_optimization
n’est pas pris en charge, car il n’est disponible que sur l’API de mise à jour.
Exemples
L’exemple suivant définit un pipeline avec la clé de ressource my_pipeline
qui crée un schéma de catalogue Unity avec la clé my_schema
comme cible :
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.
Un mappage d’octrois de niveau supérieur n’est pas pris en charge par les bundles de ressources Databricks. Par conséquent, si vous souhaitez définir des subventions pour un schéma, définissez les subventions pour le schéma au sein du mappage schemas
. Pour plus d’informations sur les subventions, consultez Afficher, accorder et révoquer des privilèges.
L’exemple suivant définit un schéma de catalogue Unity avec des subventions :
resources:
schemas:
my_schema:
name: test-schema
grants:
- principal: users
privileges:
- SELECT
- principal: my_team
privileges:
- CAN_MANAGE
catalog_name: main
volume (Unity Catalog)
Le type de ressource de volume vous permet de définir et de créer des volumes de catalogue Unity dans le cadre d’un bundle. Lors du déploiement d’un bundle avec un volume défini, notez que :
- Un volume ne peut pas être référencé dans le
artifact_path
de l’ensemble tant qu’il n’existe pas dans l’espace de travail. Par conséquent, si vous souhaitez utiliser databricks Asset Bundles pour créer le volume, vous devez d’abord définir le volume dans le bundle, le déployer pour créer le volume, puis le référencer dans leartifact_path
dans les déploiements suivants. - Les volumes de packs ne sont pas précédés du préfixe
dev_${workspace.current_user.short_name}
lorsque la cible de déploiement amode: development
configurée. Toutefois, vous pouvez configurer manuellement ce préfixe. Consultez les Préréglages personnalisés.
Exemple
L’exemple suivant crée un volume de catalogue Unity avec la clé my_volume
:
resources:
volumes:
my_volume:
catalog_name: main
name: my_volume
schema_name: my_schema
Pour un exemple de pack qui exécute un travail et écrit dans un fichier du volume Unity Catalog, consultez le référentiel GitHub bundle-examples.