Partager via


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 ./appchemin 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 le artifact_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 a mode: 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.