Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce tutoriel, vous allez créer un modèle personnalisé pour créer des bundles Automation déclaratifs qui exécutent un travail avec une tâche Python 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
Tout d’abord, définissez les variables d'invite pour l'utilisateur databricks bundle init. Depuis la ligne de commande :
Créez un dossier vide nommé
dab-container-template:mkdir dab-container-templateDans la racine du dossier, créez un fichier nommé
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonAjoutez le code JSON suivant au
databricks_template_schema.jsonfichier pour définir une invite d’utilisateur pour le nom du projet groupé :{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Créer la structure de dossiers de paquet
Ensuite, créez un template dossier pour contenir la structure de dossiers de vos bundles générés. Les noms des sous-répertoires et fichiers suivent la syntaxe du modèle de package Go.
Ce modèle crée le dossier de projet groupé en fonction de l’invite du nom du projet :
mkdir -p "template/{{.project_name}}"
Créez maintenant les sous-répertoires resources et src pour les fichiers groupés :
mkdir -p "template/{{.project_name}}/resources"
mkdir -p "template/{{.project_name}}/src"
Ajouter des modèles de configuration YAML
Dans le template/{{.project_name}} dossier, créez un fichier nommé databricks.yml.tmpl:
touch template/{{.project_name}}/databricks.yml.tmpl
Ajoutez le yaML suivant à databricks.yml.tmpl. Cet exemple utilise des assistants de modèles groupés.
# This is a 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 dans le template/{{.project_name}}/resources dossier. Ce nouveau fichier YAML contient la définition du travail.
touch template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl
Ajoutez le yaML suivant à ce fichier pour décrire le travail de modèle, qui contient une tâche Python à exécuter sur un cluster de travaux à l’aide d’une image de conteneur Docker spécifique. Cet exemple utilise une image conteneur Docker de base Databricks par défaut, mais vous pouvez spécifier votre propre image personnalisée à la place.
# 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/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
Ajouter des fichiers référencés dans votre configuration
Ensuite, créez le fichier de tâche Python référencé par le travail dans le modèle :
touch template/{{.project_name}}/src/task.py
À présent, ajoutez les éléments suivants à task.py:
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 :
dab-container-template
├── databricks_template_schema.json
└── template
├── {{.project_name}}
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── 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 :
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éveloppez un travail avec des bundles d'automatisation déclaratifs.
- 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 Develop pipelines with Declarative Automation Bundles.
- Créez un bundle qui déploie et exécute une infrastructure MLOps. Consultez les bundles d'Automatisation Déclarative pour les piles MLOps.
- Ajoutez un bundle à un workflow CI/CD (intégration continue/déploiement continu) dans GitHub. Consultez GitHub Actions.