Gérer les applications Databricks à l'aide des Declarative Automation Bundles
Databricks Apps vous permet de créer des applications de données et d'IA sécurisées sur la plateforme Databricks que vous pouvez facilement partager avec les utilisateurs. Vous pouvez gérer les déploiements de vos applications à l'aide des Declarative Automation Bundles. Pour plus d'informations sur les applications et les bundles, consultez Databricks Apps et What are Declarative Automation Bundles?.
Cette page vous guide à travers le développement d'une application Databricks localement, puis la configuration d'un bundle pour gérer les déploiements de l'application vers le Workspace Databricks à l'aide des Declarative Automation Bundles.
Pour initialiser un exemple de bundle avec une application Streamlit, utilisez le Template de bundle streamlit-app avec la commande bundle init :
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app
Exigences
- Votre Workspace Databricks et votre environnement de développement local doivent satisfaire aux exigences des Databricks Apps. Consultez Configurez votre Workspace Databricks Apps et votre environnement de développement.
- Databricks CLI version 0,250,0 ou supérieure. Pour vérifier la version installée de la Databricks CLI, exécutez la commande
databricks -v. Pour installer la Databricks CLI, consultez Installer ou mettre à jour la Databricks CLI.
Créer une application localement
Tout d'abord, créez une application Databricks. Les applications sont développées en Python à l’aide de frameworks courants, tels que Dash ou Gradio. Vous pouvez créer une application Databricks localement à partir de zéro, en créer une dans le Workspace Databricks et synchroniser les fichiers avec votre machine locale, ou obtenir un exemple d'application Databricks depuis GitHub.
-
Pour élaborer une application à partir de zéro :
-
Suivez un tutoriel de start rapide pour un framework :
-
Ajoutez un fichier
app.yamlà la racine de votre projet pour définir comment exécuter votre application Python principale. Par exemple :Pour une application Streamlit :
YAMLcommand: ['streamlit', 'run', 'app.py']Ou pour une application Dash :
YAMLcommand: ['python', 'app.py']
-
-
Pour créer une application dans le Workspace et la synchroniser localement :
-
Suivez les étapes de Prise en main des Databricks Apps pour créer une application dans l’interface utilisateur.
-
Créez un répertoire local pour l'application et
cddedans :Bashmkdir hello-world-app
cd hello-world-app -
Synchronisez les fichiers de l'application localement. Vous pouvez copier la commande
databricks workspace export-dirdepuis la page d'installation de l'application dans l'interface utilisateur du Workspace et l'exécuter dans votre ligne de commande. Par exemple :Bashdatabricks workspace export-dir /Workspace/Users/someone@example.com/databricks_apps/hello-world_2025_05_09-17_43/hello-world-app .Ceci télécharge les fichiers de l'application du répertoire Workspace vers le répertoire
hello-world-appsur votre machine locale.
-
-
Pour obtenir un exemple d'application Databricks à partir de GitHub :
-
Clonez le repository GitHub des modèles d'application Databricks :
Bashgit clone https://github.com/databricks/app-templates -
Choisissez l'une des applications d'exemple comme un projet d'application simple.
-
Ajouter une application existante à un bundle existant
Si vous avez une application Databricks dans votre workspace, et que vous avez un bundle existant auquel vous voulez ajouter l'application, vous pouvez utiliser la commande databricks bundle generate app. Cette commande génère un fichier de configuration pour l'application et download tous les fichiers de code source pour l'application, et les ajoute à votre bundle. Par exemple :
databricks bundle generate app --existing-app-name hello-world-app
Après avoir généré la configuration de l'application dans votre bundle, utilisez la commande databricks bundle bind pour maintenir l'application et le bundle synchronisés dans le Workspace.
Pour plus d'informations sur databricks bundle generate et databricks bundle bind, consultez le groupe de commandesbundle.
Développer et déboguer l'application localement
Ensuite, continuez à développer votre application localement. Lancez et déboguez l'application à l'aide de la commande databricks apps run-local. Cette commande lance un proxy d'application qui est utilisé pour acheminer les requêtes vers l'application elle-même et injecte les en-têtes nécessaires liés à l'application Databricks.
-
Pour installer toutes les dépendances, préparez l'environnement virtuel et start l'application et le débogueur, utilisez la commande
run-localavec les options--prepare-environmentet--debug:Bashdatabricks apps run-local --prepare-environment --debugCette commande utilise
uvpour préparer l'environnement virtuel et le débogueur est basé surdebugpy. -
Accédez à
http://localhost:8001pour afficher votre application. -
Définissez des points d'arrêt pour déboguer votre application. Dans Visual Studio Code, installez le débogueur Python, puis sélectionnez Exécuter > Démarrer le debugging et enfin Attacher à distance .
Le proxy start sur le port 5678, mais vous pouvez le configurer en utilisant l'option
--port.
Déployez l'application sur le Workspace
Lorsque vous êtes prêt à déployer votre application sur le Workspace, ajoutez la configuration de bundle qui crée l'application, puis déployez le bundle.
-
Créez un fichier
databricks.ymlà la racine de votre projet d'application. Le Databricks CLI reconnaît un dossier avec un fichierdatabricks.ymlà sa racine comme un bundle, ce qui permet les commandes de bundle Databricks. -
Copiez et collez le YAML suivant dans le fichier
databricks.yml, en remplaçant les valeurs d'espace réservé de Workspace et de nom d'utilisateur par les vôtres :YAMLbundle:
name: hello_world_bundle
resources:
apps:
hello_world_app:
name: 'hello-world-app'
source_code_path: . # This assumes the app source code is at the root of the project.
description: 'A Databricks app'
targets:
dev:
mode: development
default: true
workspace:
host: https://myworkspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://myworkspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE -
Validez, puis déployez le bundle. Par default, cela crée l'application et le bundle dans la cible
devdans le Workspace.Bashdatabricks bundle validate
databricks bundle deploy -
Le déploiement d'un bundle ne déploie pas automatiquement l'application vers compute. Pour déployer l'application, utilisez soit l'interface utilisateur (depuis la page de l'application dans le workspace Databricks), soit la CLI Databricks (
databricks apps deploy). Voir Déployer une application Databricks. -
Utilisez la commande
bundle summarypour récupérer des informations sur l'application déployée :Bashdatabricks bundle summaryOutputName: hello_world_bundle
Target: dev
Workspace:
Host: https://myworkspace.cloud.databricks.com
User: someone@example.com
Path: /Workspace/Users/someone@example.com/.bundle/hello_world_bundle/dev
Resources:
Apps:
hello_world_app:
Name: hello-world-app
URL: https://myworkspace.cloud.databricks.com/apps/hello-world-app?o=8498204313176880
Développer, tester, itérer
Continuez à apporter des modifications à votre application localement, puis redéployez le bundle pour mettre à jour l'application dans le workspace. Pendant les tests, vous pourriez vouloir configurer les autorisations d'utilisation pour l'application pour d'autres utilisateurs dans votre workspace Databricks, ce que vous pouvez faire en spécifiant les autorisations:
resources:
apps:
hello_world_app:
name: 'hello-world-app'
source_code_path: . # This assumes the app source code is at the root of the project.
description: 'A Databricks app'
permissions:
- level: CAN_USE
group_name: users
Pour start l'application dans le Workspace, exécutez l'application dans le bundle en spécifiant la clé de Ressource de l'application dans la commande :
databricks bundle run hello_world_app
Déployer en production
Databricks recommande d'utiliser un Service Principal pour l'authentification en production. Lorsque vous êtes prêt à rendre l'application disponible en production, mettez à jour la configuration de votre bundle pour utiliser un Service Principal, puis déployez le bundle dans votre Workspace de production cible. Pour des informations sur les Service Principal, consultez Service Principal pour CI/CD.
Modifier le bundle pour utiliser un Service Principal
Avant de déployer en production, configurez un octroi dans le bundle qui donne l'autorisation à un Service Principal. Vous pouvez configurer l'octroi lorsque l'application est créée ou lorsque le bundle est exécuté.
Pour accorder l'autorisation au Service Principal lors de la création de l'application au moment du déploiement du bundle, modifiez le databricks.yml du bundle pour définir une subvention pour l'application. Utilisez une substitution de bundle pour attribuer le Service Principal :
bundle:
name: hello_world_bundle
resources:
apps:
hello_world_app:
name: 'hello-world-app'
source_code_path: . # This assumes the app source code is at the root of the project.
description: 'A Databricks app'
schemas:
my_schema:
name: my_schema
grants:
- principal: '${resources.apps.hello_world_app.service_principal_client_id}'
privileges:
- CREATE_TABLE
catalog_name: main
targets:
dev:
mode: development
default: true
workspace:
host: https://myworkspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://myworkspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
Sinon, définissez un job dans le bundle qui configure un grant lorsque le bundle est exécuté :
-
Ajouter un Notebook appelé
grant_notebook.ipynbavec le contenu suivant dans une cellule. Remplacez<schema-name>par un nom d'utilisateur administrateur.Pythonapp_service_principal = dbutils.widgets.get("app_service_principal")
spark.sql(f"GRANT ALL PRIVILEGES ON SCHEMA <schema-name> TO `{app_service_principal}`") -
Définissez un job dans le
databricks.ymldu bundle pour exécuter un notebook qui accorde l'autorisation au Service Principal. Utilisez les substitutions de bundle pour affecter la valeur du Service Principal :YAMLbundle:
name: hello_world_bundle
resources:
apps:
hello_world_app:
name: 'hello-world-app'
source_code_path: . # This assumes the app source code is at the root of the project.
description: 'A Databricks app'
jobs:
grant_job:
name: 'grant-job'
parameters:
- name: app_service_principal
default: '${resources.apps.hello_world_app.service_principal_client_id}'
tasks:
- task_key: setup_grants
notebook_task:
notebook_path: ./grant_notebook.ipynb
targets:
dev:
mode: development
default: true
workspace:
host: https://myworkspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://myworkspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
Déployez le bundle mis à jour
Maintenant, déployez le bundle dans le workspace de production et exécutez l'application :
databricks bundle deploy -t prod
databricks bundle run grant_job -t prod # (Optional) Run this if the grant is configured with a job
databricks bundle run hello_world_app -t prod