Convertir un pipeline en projet de bundle
Vous pouvez convertir un pipeline existant en un projet Declarative Automation Bundles. Les bundles vous permettent de définir et de gérer votre configuration de traitement de données Databricks dans un fichier YAML unique à contrôle de source, ce qui facilite la maintenance et permet un déploiement automatisé vers les environnements cibles.
Pour un tutoriel qui utilise les commandes databricks pipelines pour créer un projet de pipelines, puis déploie et exécute un pipeline, consultez Développer des pipelines avec des bundles d’automatisation déclaratifs.
Présentation du processus de conversion

Les étapes à suivre pour convertir un pipeline existant en bundle sont :
- Assurez-vous d'avoir accès à un pipeline préalablement configuré que vous souhaitez convertir en bundle.
- Créez ou préparez un dossier (de préférence dans une hiérarchie gérée par la source) pour stocker le bundle.
- Générez une configuration pour le bundle à partir du pipeline existant, à l'aide de la CLI Databricks.
- Examinez la configuration du bundle générée pour vous assurer qu'elle est complète.
- Link the bundle au pipeline original.
- Déployez le pipeline vers un Workspace cible à l'aide de la configuration du bundle.
Exigences
Avant de vous start, vous devez avoir :
- Le Databricks CLI installé sur votre machine de développement locale. La version 0.218.0 ou supérieure du Databricks CLI est requise pour utiliser les Declarative Automation Bundles.
- L'ID d'un pipeline déclaratif existant que vous gérerez avec un bundle. Pour savoir comment obtenir cet ID, consultez Obtenir une définition de pipeline existante à l'aide de l'interface utilisateur.
- Autorisation pour le Workspace Databricks où le pipeline existant s'exécute. Pour configurer l'authentification et l'autorisation pour vos appels CLI Databricks, consultez Autoriser l'accès aux Ressources Databricks.
- Pour l'ensemble complet des privilèges requis pour créer, exécuter, refresh et consulter les pipelines et leur sortie, consultez Gérer les identités, les autorisations et les privilèges pour les pipelines.
Étape 1 : Mettre en place un dossier pour votre projet de bundle
Vous devez avoir accès à un repository Git qui est configuré dans Databricks en tant que dossier Git. Vous créerez votre projet de bundle dans ce repository, ce qui appliquera le contrôle de code source et le rendra disponible à d'autres collaborateurs via un dossier Git dans le workspace Databricks correspondant. (Pour plus de détails sur les dossiers Git, consultez les dossiers Git Databricks.)
-
Accédez à la racine du repository Git cloné sur votre machine locale.
-
Dans un emplacement approprié de la hiérarchie des dossiers, créez un dossier spécifiquement pour votre projet de bundle. Par exemple :
Bashmkdir -p ~/source/my-pipelines/ingestion/events/my-bundle -
Modifiez votre répertoire de travail actuel en ce nouveau dossier. Par exemple :
Bashcd ~/source/my-pipelines/ingestion/events/my-bundle -
Initialisez un nouveau bundle en exécutant :
Bashdatabricks bundle initRépondez aux invites. Une fois terminée, vous disposerez d’un fichier de configuration de projet nommé
databricks.ymldans le nouveau dossier d’accueil de votre projet. Ce fichier est requis pour le déploiement de votre pipeline à partir de la ligne de commande. Pour plus de détails sur ce fichier de configuration, consultez la configuration des Declarative Automation Bundles.
Étape 2 : Générer la configuration du pipeline
À partir de ce nouveau répertoire dans l'arborescence des dossiers de votre repository Git cloné, exécutez la commande bundle generate de la CLI Databricks, en fournissant l'ID de votre pipeline comme <pipeline-id>:
databricks bundle generate pipeline --existing-pipeline-id <pipeline-id> --profile <profile-name>
Lorsque vous exécutez la commande generate, un fichier de configuration de bundle est créé pour votre pipeline dans le dossier resources du bundle et tous les artefacts référencés sont téléchargés dans le dossier src. Le --profile (ou l'indicateur -p) est facultatif, mais si vous avez un profil de configuration Databricks spécifique (défini dans votre fichier .databrickscfg créé lors de l'installation de l'interface de ligne de commande Databricks) que vous préférez utiliser au lieu du profil default, fournissez-le dans cette commande. Pour plus d'informations sur les profils de configuration Databricks, consultez les profils de configuration Databricks.
Si vous avez un projet Spark Declarative Pipelines (SDP) existant (il contient un fichier spark-pipeline.yml), vous pouvez copier ce projet de pipeline dans le dossier src du bundle, puis utiliser la commande databricks pipelines generate pour générer la configuration du bundle. Voir générer des pipelines Databricks.
Étape 3 : examiner les fichiers du projet groupé
Lorsque la commande bundle generate est terminée, elle aura créé deux nouveaux dossiers :
resourcesest le sous-répertoire du projet qui contient les fichiers de configuration du projet.srcest le dossier de projet où sont stockés les fichiers source, tels que les queries et les notebooks.
La commande crée également des fichiers supplémentaires :
*.pipeline.ymlsous le sous-répertoireresources. Ce fichier contient la configuration et les paramètres spécifiques de votre pipeline.- Fichiers source tels que les requêtes SQL sous le sous-répertoire
src, copiés de votre pipeline existant.
├── databricks.yml # Project configuration file created with the bundle init command
├── resources/
│ └── {your-pipeline-name.pipeline}.yml # Pipeline configuration
└── src/
└── {source folders and files...} # Your pipeline's declarative queries
Étape 4 : liez le pipeline de bundle à votre pipeline existant
Vous devez link, ou lier , la définition du pipeline dans le bundle à votre pipeline existant afin de le maintenir à jour à mesure que vous apportez des modifications. Pour ce faire, exécutez la commande de liaison de déploiement de bundle de la CLI Databricks :
databricks bundle deployment bind <pipeline-name> <pipeline-ID> --profile <profile-name>
<pipeline-name> est le nom du pipeline. Le nom doit être identique à la valeur de chaîne préfixée du nom de fichier pour la configuration du pipeline dans votre nouveau répertoire resources. Par exemple, si vous avez un fichier de configuration de pipeline nommé ingestion_data_pipeline.pipeline.yml dans votre dossier resources, vous devez fournir ingestion_data_pipeline comme nom de pipeline.
<pipeline-ID> est l'ID de votre pipeline. Il est identique à celui que vous avez copié dans le cadre des exigences de ces instructions.
Étape 5 : Déployer votre pipeline à l'aide de votre nouveau bundle
Maintenant, déployez votre bundle de pipeline vers votre workspace cible à l'aide de la CLI Databricks commande de déploiement de bundle:
databricks bundle deploy --target <target-name> --profile <profile-name>
L'indicateur --target est obligatoire et doit être défini sur une chaîne de caractères qui correspond à un nom de workspace cible configuré, tel que development ou production.
Si cette commande réussit, vous disposez maintenant de la configuration de votre pipeline dans un projet externe qui peut être chargé dans d'autres Workspaces et exécuté, et facilement partagé avec d'autres utilisateurs Databricks de votre compte.
Promouvoir entre les environnements avec des cibles
Un bundle définit des environnements de déploiement nommés targets dans databricks.yml, chacun pointant vers son propre workspace, son catalogue et ses valeurs de variable. Les cibles sont le moyen de promouvoir le même pipeline à travers les environnements de développement, de préproduction et de production, en déployant un code source identique dans chaque environnement successif sans le modifier :
bundle:
name: orders_pipeline
variables:
catalog:
description: Unity Catalog to write to
default: dev_catalog
targets:
dev:
mode: development
default: true
variables:
catalog: dev_catalog
prod:
mode: production
variables:
catalog: prod_catalog
run_as:
service_principal_name: '12345678-90ab-cdef-1234-567890abcdef'
Le mode que vous définissez sur chaque cible modifie son comportement de déploiement :
mode: developmentmarque une cible comme étant un déploiement personnel et temporaire. Les Ressources reçoivent un préfixe[dev username]et les plannings sont suspendus par default, afin que votre travail n'affecte personne d'autre.mode: productiondésactive ces safety default. Combiné avecrun_as, cela vous permet d'exécuter le pipeline en tant que service principal plutôt qu'en tant que compte individuel, afin que les exécutions ne soient pas interrompues lorsque quelqu'un quitte l'équipe ou change de rôle. Databricks recommande un service principal pour la staging et la production.service_principal_nameutilise l'ID d'application du service principal, et non son nom d'affichage. Vous pouvez récupérer l'ID d'application depuis la page du service principal dans vos paramètres d'administration de workspace.
Pour l'ensemble des comportements de mode, consultez les modes de déploiement des Declarative Automation Bundles et spécifiez une identité d'exécution pour un workflow de Declarative Automation Bundles.
Pour promouvoir, déployez le même bundle vers chaque cible tour à tour, en vérifiant à chaque étape :
databricks bundle validate --target prod
databricks bundle deploy --target prod
databricks bundle run orders_pipeline --target prod
Plutôt que de coder en dur les noms de catalogue ou les chemins sources par environnement dans votre code de transformation, transmettez les valeurs depuis la cible afin que la même source s’exécute sans modification partout. La façon dont vous les définissez dépend de votre langue source. Les paramètres du pipeline s’appliquent uniquement au code source SQL. Pour le code source Python, utilisez le champ configuration du pipeline et lisez les valeurs avec spark.conf.get():
resources:
pipelines:
orders_pipeline:
name: orders-pipeline
# For SQL source code. Reference as ${source_catalog}.
parameters:
source_catalog: ${var.catalog}
source_schema: raw
# For Python source code. Read with spark.conf.get("source_catalog").
configuration:
source_catalog: ${var.catalog}
source_schema: raw
Pour en savoir plus sur la paramétrisation du code de pipeline, consultez Utiliser des paramètres avec des pipelines.
Configurer CI/CD
Comme un pipeline converti est entièrement défini sous forme de bundle (YAML et fichiers sources dans Git), la configuration des fonctionnalités d’intégration et de livraison continues (CI/CD) pour celui-ci implique l’exécution des commandes du bundle à partir d’un système CI tel que GitHub Actions ou Azure DevOps. Sur chaque requête Pull, une bonne exécution de référence s’exécute :
pytestpar rapport à vos fonctions de transformation testables unitairement. Voir Tests unitaires pour les pipelines.databricks bundle validate --target <env>pour détecter les erreurs de configuration.- Optionnellement, un
databricks bundle rundans une cible temporaire pour tester les attentes par rapport à l'échantillon de données.
Le flux de travail GitHub Actions suivant se déploie pour staging lors de la Merge vers main, en utilisant la fédération OpenID Connect (OIDC) au lieu d’un jeton stocké :
# .github/workflows/deploy.yml
name: Deploy pipeline bundle
on:
push:
branches: [main]
permissions:
id-token: write
contents: read
jobs:
deploy-staging:
runs-on: ubuntu-latest
environment: staging
env:
DATABRICKS_AUTH_TYPE: github-oidc
DATABRICKS_HOST: ${{ vars.DATABRICKS_HOST }}
DATABRICKS_CLIENT_ID: ${{ vars.DATABRICKS_CLIENT_ID }} # Service principal application ID
steps:
- uses: actions/checkout@v4
- name: Install Databricks CLI
uses: databricks/setup-cli@main
- name: Validate bundle
run: databricks bundle validate --target staging
- name: Deploy bundle
run: databricks bundle deploy --target staging
Protégez le déploiement en production par une approbation manuelle (par exemple, un second job qui nécessite une approbation d’environnement GitHub, ou une étape distincte dans Azure DevOps) afin qu’une personne approuve explicitement chaque promotion. Le job de production exécute databricks bundle deploy --target prod en utilisant un Service Principal limité au workspace de production. Pour en savoir plus, consultez CI/CD sur Databricks.
Dépannage
Problème | Solutions |
|---|---|
Erreur « | Actuellement, la commande |
Les paramètres de pipeline existants ne correspondent pas aux valeurs de la configuration YAML du pipeline généré. | L'ID du pipeline n'apparaît pas dans le fichier YML de configuration du bundle. Si vous remarquez d'autres paramètres manquants, vous pouvez les appliquer manuellement. |
Conseils pour la réussite
- Utilisez toujours le contrôle de version. Si vous n'utilisez pas les dossiers Git Databricks, stockez les sous-répertoires et les fichiers de votre projet dans un repository Git ou un autre système de fichiers sous gestion de version.
- Testez votre pipeline dans un environnement hors production (tel qu'un environnement « développement » ou « test ») avant de le déployer dans un environnement de production. Il est facile d'introduire une mauvaise configuration par accident.
Ressources supplémentaires
Pour plus d'informations sur l'utilisation de bundles pour définir et gérer le traitement des données, voir :
- Que sont les Declarative Automation Bundles ?
- Développer des pipelines avec des Declarative Automation Bundles. Cette rubrique couvre la création d'un bundle pour un nouveau pipeline plutôt que pour un pipeline existant, avec des fichiers sources sous contrôle de version pour le traitement que vous fournissez.