Modèles de projets de packs de ressources Databricks
Cet article décrit la syntaxe des modèles de packs de ressources Databricks. Les bundles permettent la gestion par programmation des flux de travail Azure Databricks. Consultez Que sont les packs de ressources Databricks ?
Les modèles de pack permettent aux utilisateurs de créer des packs de manière cohérente et reproductible, en établissant des structures de dossiers, des étapes de génération et des tâches, des tests et d’autres attributs IaC (Infrastructure-as-code) DevOps courants dans un pipeline de déploiement d’environnement de développement.
Par exemple, si vous exécutez régulièrement des travaux Databricks qui nécessitent des packages personnalisés avec une étape de compilation fastidieuse lors de l’installation, vous pouvez accélérer votre boucle de développement en créant un modèle de bundle qui prend en charge les environnements de conteneur personnalisés.
Les modèles de pack définissent la structure de répertoires du pack qui sera créé et incluent un databricks.yml.tmpl
modèle de fichier de configurationdatabricks_template_schema.json
ainsi qu’un fichier contenant des variables d’invite utilisateur.
Utiliser un modèle de pack par défaut
Pour utiliser un modèle de pack par défaut Azure Databricks afin de créer votre pack, utilisez la commande Databricks CLI bundle init
, en spécifiant le nom du modèle par défaut à utiliser. Par exemple, la commande suivante crée un pack en utilisant le modèle de pack Python par défaut :
databricks bundle init default-python
Si vous ne spécifiez pas de modèle par défaut, la commande bundle init
présente l’ensemble des modèles disponibles parmi lesquels vous pouvez choisir.
Azure Databricks fournit les modèles de pack par défaut suivants :
Template | Description |
---|---|
default-python |
Un modèle pour utiliser Python avec Databricks. Ce modèle crée un pack avec un travail et un pipeline Delta Live Tables. Reportez-vous à default-python. |
default-sql |
Un modèle pour utiliser SQL avec Databricks. Ce modèle contient un fichier de configuration qui définit un travail qui exécute des requêtes SQL sur un entrepôt SQL. Reportez-vous à default-sql. |
dbt-sql |
Un modèle qui tire parti de dbt-core pour le développement local et de packs pour le déploiement. Ce modèle contient la configuration qui définit un travail avec une tâche dbt ainsi qu’un fichier de configuration qui définit des profils dbt pour les travaux dbt déployés. Reportez-vous à dbt-sql. |
mlops-stacks |
Un modèle de pile complète avancé pour démarrer de nouveaux projets de piles MLOps. Reportez-vous à mlops-stacks et à Packs de ressources Databricks pour des piles MLOps. |
Utiliser un modèle de pack personnalisé
Pour utiliser un modèle de pack autre que des modèles de pack par défaut Azure Databricks, passez le chemin d’accès local ou l’URL distante du modèle à la commande Databricks CLI bundle init
.
Par exemple, la commande suivante utilise le modèle dab-container-template
créé dans le tutoriel Modèle de pack personnalisé :
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Créer un modèle de pack personnalisé
Les modèles de bundle utilisent la syntaxe de création de modèles de package Go. Consultez la documentation du Modèle de package Go.
Au minimum, un projet de modèle de pack doit avoir :
- Un fichier
databricks_template_schema.json
à la racine du projet qui définit une variable d’invite utilisateur pour le nom du projet de pack. - Un fichier
databricks.yml.tmpl
qui se trouve dans un dossiertemplate
, qui définit la configuration des packs créés avec le modèle. Si votre fichierdatabricks.yml.tmpl
fait référence à des modèles de configuration de*.yml.tmpl
supplémentaires, spécifiez l’emplacement de ces modèles dans le mappageinclude
.
Vous pouvez facultativement ajouter des sous-dossiers et des fichiers au dossier template
que vous voulez reproduire dans les packs créés par le modèle.
Définir des variables d’invite utilisateur
La première étape de la création d’un modèle de pack de base est de créer un dossier de projet de modèle et un fichier nommé databricks_template_schema.json
à la racine du projet. Ce fichier contient les variables pour lesquelles les utilisateurs fournissent des valeurs d’entrée quand ils utilisent le modèle pour créer un pack en utilisant bundle init
. Le format de ce fichier suit la spécification de schéma JSON.
mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json
Ajoutez ce qui suit au fichier databricks_template_schema.json
, puis enregistrez le fichier :
{
"properties": {
"project_name": {
"type": "string",
"default": "basic_bundle",
"description": "What is the name of the bundle you want to create?",
"order": 1
}
},
"success_message": "\nYour bundle '{{.project_name}}' has been created."
}
Dans ce fichier :
project_name
est le seul nom de variable d’entrée.default
est une valeur par défaut facultative pour le cas où une valeur n’est pas fournie par l’utilisateur avec--config-file
dans le cadre de la commandebundle init
, ou si elle est remplacée par l’utilisateur sur l’invite de commandes.description
est l’invite utilisateur associée à la variable d’entrée pour le cas où une valeur n’est pas fournie par l’utilisateur avec--config-file
dans le cadre de la commandebundle init
.order
est un ordre facultatif dans lequel chaque invite utilisateur s’affiche, pour le cas où une valeur n’est pas fournie par l’utilisateur avec--config-file
dans le cadre de la commandebundle init
. Siorder
n’est pas fourni, les invites utilisateur s’affichent dans l’ordre où elles sont listées dans le schéma.success_message
est un message facultatif qui s'affiche lorsque le projet est bien créé.
Créer la structure de dossiers
Ensuite, créez le dossier template
nécessaire et générez la structure de dossiers dans celui-ci. Cette structure sera reproduite dans les packs créés avec ce modèle. En outre, placez les fichiers que vous voulez inclure dans ces dossiers. Ce modèle de pack de base stocke des fichiers dans un dossier src
et inclut un notebook simple.
mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb
Ajoutez ce qui suit au fichier simple_notebook.ipynb
:
print("Hello World!")
Remplir les fichiers du modèle de configuration
Créez maintenant le fichier databricks.yml.tmpl
nécessaire dans le dossier template
:
touch basic-bundle-template/template/databricks.yml.tmpl
Remplissez ce fichier avec le code YAML du modèle de configuration de base. Ce modèle de configuration établit le nom du pack, un travail en utilisant le fichier du notebook spécifié et deux environnements cibles pour les packs créés avec ce modèle. Il tire également parti des substitutions de pack, qui est fortement recommandée. Consultez Substitutions de pack.
# This is the configuration for the Databricks Asset Bundle {{.project_name}}.
bundle:
name: {{.project_name}}
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
dev:
mode: development
default: true
workspace:
host: {{workspace_host}}
prod:
mode: production
workspace:
host: {{workspace_host}}
root_path: /Shared/.bundle/prod/${bundle.name}
{{- if not is_service_principal}}
run_as:
# This runs as {{user_name}} in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: {{user_name}}
{{end -}}
Tester un modèle de pack
Enfin, testez votre modèle. Créez un dossier de projet de pack, puis utilisez l’interface CLI Databricks pour initialiser un nouveau pack en utilisant le modèle :
mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template
À l’invite What is your bundle project name?
, tapez my_test_bundle
.
Une fois le pack de test créé, le message de réussite du fichier de schéma est affiché. Si vous examinez le contenu du dossier my-test-bundle
, vous voyez normalement ceci :
my-test-bundle
├── databricks.yml
└── src
└── simple_notebook.ipynb
Et le fichier databricks.yml est maintenant personnalisé :
# This is the configuration for the Databricks Asset Bundle my-test-bundle.
bundle:
name: my-test-bundle
# The main job for my-test-bundle
resources:
jobs:
my-test-bundle_job:
name: my-test-bundle_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
dev:
mode: development
default: true
workspace:
host: https://my-host.cloud.databricks.com
# The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
prod:
mode: production
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/.bundle/prod/${bundle.name}
run_as:
# This runs as someone@example.com in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: someone@example.com
Partager le modèle
Si vous souhaitez partager ce modèle de bundle avec d’autres personnes, vous pouvez le stocker dans la gestion de version avec n’importe quel fournisseur pris en charge par Git et auquel vos utilisateurs ont accès. Pour exécuter la commande bundle init
avec une URL Git, assurez-vous que le fichier databricks_template_schema.json
se trouve à l’emplacement racine par rapport à cette URL Git.
Conseil
Vous pouvez placer le fichier databricks_template_schema.json
dans un autre dossier, par rapport à la racine du bundle. Dans la commande bundle init
, vous pouvez ensuite utiliser l’option --template-dir
pour référencer ce dossier, qui contient le fichier databricks_template_schema.json
.
Étapes suivantes
- Parcourez les modèles supplémentaires créés et gérés par Databricks. Reportez-vous à la base de données de référentiel d'exemples de packs dans GitHub.
- Pour utiliser les piles MLOps avec les modèles de packs de ressources Databricks, reportez-vous aux packs de ressources Databricks pour les piles MLOps.
- En savoir plus sur la création de modèles de packages Go. Consultez la documentation du Modèle de package Go.