Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce tutoriel, vous allez créer un modèle Databricks Asset Bundle personnalisé pour créer des bundles qui exécutent un travail avec une tâche Python spécifique sur un cluster à l’aide d’une image conteneur Docker spécifique.
Pour plus d’informations sur les modèles de bundle personnalisés, consultez Modèles de bundle personnalisés.
Spécifications
- Installez l’interface CLI Databricks version 0.218.0 ou ultérieure. Si vous l’avez déjà installé, vérifiez que la version est 0.218.0 ou ultérieure en exécutant
databricks -versionà partir de la ligne de commande.
Définir des variables de requête utilisateur
La première étape de la création d’un modèle de pack consiste à définir les variables de requête utilisateur databricks bundle init. Depuis la ligne de commande :
Créez un répertoire vide nommé
dab-container-template:mkdir dab-container-templateDans la racine du répertoire, créez un fichier nommé
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonAjoutez le contenu suivant au
databricks_template_schema.jsonfichier et enregistrez le fichier. Chaque variable est traduite en requête utilisateur lors de la création d’un pack.{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Créer la structure de dossiers de paquet
Ensuite, dans le répertoire du modèle, créez des sous-répertoires nommés resources et src. Le template dossier contient la structure de répertoires de vos bundles générés. Les noms des sous-répertoires et fichiers suivent la syntaxe du modèle de package Go lorsqu’ils sont dérivés de valeurs utilisateur.
mkdir -p "template/resources"
mkdir -p "template/src"
Ajouter des modèles de configuration YAML
Dans le template répertoire, créez un fichier nommé databricks.yml.tmpl et ajoutez le fichier YAML suivant. Cet exemple utilise des assistants de modèles groupés.
touch template/databricks.yml.tmpl
# This is a Databricks asset bundle definition for {{.project_name}}.
# See https://docs.databricks.com/dev-tools/bundles/index.html for documentation.
bundle:
name: {{.project_name}}
include:
- resources/*.yml
targets:
# The 'dev' target, used for development purposes.
# Whenever a developer deploys using 'dev', they get their own copy.
dev:
# We use 'mode: development' to make sure everything deployed to this target gets a prefix
# like '[dev my_user_name]'. Setting this mode also disables any schedules and
# automatic triggers for jobs and enables the 'development' mode for :re[LDP].
mode: development
default: true
workspace:
host: {{workspace_host}}
# The 'prod' target, used for production deployment.
prod:
# For production deployments, we only have a single copy, so we override the
# workspace.root_path default of
# /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.target}/${bundle.name}
# to a path that is not specific to the current user.
#
# By making use of 'mode: production' we enable strict checks
# to make sure we have correctly configured this target.
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
# (see Databricks documentation).
user_name: {{user_name}}
{{end -}}
Créez un autre fichier YAML nommé {{.project_name}}_job.yml.tmpl et placez-le dans le template/resources répertoire. Ce nouveau fichier YAML sépare les définitions de tâches du projet du reste de la définition du bundle. Ajoutez le yaML suivant à ce fichier pour décrire le travail de modèle, qui contient une tâche Python spécifique à exécuter sur un cluster de travaux à l’aide d’une image conteneur Docker spécifique :
touch template/resources/{{.project_name}}_job.yml.tmpl
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: python_task
job_cluster_key: job_cluster
spark_python_task:
python_file: ../src/{{.project_name}}/task.py
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
docker_image:
url: databricksruntime/python:10.4-LTS
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
Dans cet exemple, vous utilisez une image conteneur Docker de base Databricks par défaut, mais vous pouvez spécifier votre propre image personnalisée à la place.
Ajouter des fichiers référencés dans votre configuration
Ensuite, créez un template/src/{{.project_name}} répertoire et créez le fichier de tâche Python référencé par le travail dans le modèle :
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
À présent, ajoutez les éléments suivants à task.py:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
print(f'Spark version{spark.version}')
Vérifier la structure du modèle d’offre groupée
Passez en revue la structure de dossiers de votre projet de modèle d’offre groupée. Il doit ressembler à ceci :
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── task.py
Tester votre modèle
Enfin, testez votre modèle d’offre groupée. Pour générer un bundle basé sur votre nouveau modèle personnalisé, utilisez la databricks bundle init commande, en spécifiant le nouvel emplacement du modèle. À partir de votre dossier racine de projets groupés :
mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template
Étapes suivantes
- Créez un bundle qui déploie un notebook dans un espace de travail Azure Databricks, puis exécute ce notebook déployé en tant que travail Azure Databricks. Consultez Développer un job avec Databricks Asset Bundles.
- Créez un bundle qui déploie un notebook sur un espace de travail Azure Databricks, puis exécutez ce notebook en tant que pipeline ETL. Consultez Développer des pipelines déclaratifs Spark Lakeflow avec des bundles de ressources Databricks.
- Créez un bundle qui déploie et exécute une infrastructure MLOps. Consultez Packs de ressources Databricks pour les piles MLOps.
- Ajoutez un bundle à un workflow CI/CD (intégration continue/déploiement continu) dans GitHub. Consultez GitHub Actions.