Créer un bundle manuellement
Dans ce tutoriel, vous créez un bundle à partir de zéro. Ce simple bundle se compose de deux Notebooks et de la définition d'un Job Databricks pour exécuter ces Notebooks. Vous validez, déployez et exécutez ensuite le Job dans votre Workspace Databricks. Ces étapes automatisent le guide de démarrage rapide intitulé Créez votre premier workflow avec Lakeflow Jobs.
Exigences
- Databricks CLI version 0.218.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. - Authentification configurée pour la CLI Databricks. L'authentification U2M est appropriée pour essayer ces étapes en temps réel. Consultez l'authentification pour la CLI Databricks.
- Le Workspace Databricks distant doit avoir les fichiers de workspace activés. Consultez Qu'est-ce qu'un fichier de workspace ?.
Étape 1 : Créez le bundle
Un bundle contient les artefacts que vous souhaitez déployer et les paramètres des ressources que vous souhaitez exécuter.
- Créez ou identifiez un répertoire vide sur votre machine de développement.
- Basculez vers le répertoire vide dans votre terminal ou ouvrez-le dans votre IDE.
Vous pouvez également utiliser un répertoire contenant un repository cloné d'un fournisseur Git. Cela vous permet de gérer votre bundle avec un contrôle de version externe et de collaborer plus facilement avec d'autres développeurs et professionnels de l'IT sur votre projet.
Si vous choisissez de cloner un référentiel pour cette démo, Databricks vous recommande que le référentiel soit vide ou ne contienne que des fichiers de base tels que README et .gitignore. Sinon, les fichiers préexistants dans le dépôt pourraient être synchronisés inutilement avec votre Databricks Workspace.
Étape 2 : Ajoutez des notebooks au projet
Dans cette étape, vous ajoutez deux Notebook à votre projet. Le premier Notebook récupère une liste des noms de bébés les plus populaires depuis 2007 à partir des sources de données publiques du Département de la Santé de l'État de New York. Voir Noms de bébés : Tendances par nom : À partir de 2007 sur le site web du département. Le premier Notebook enregistre ensuite ces données dans votre volume Databricks Unity Catalog nommé my-volume dans un schéma nommé default dans un catalogue nommé main. Le deuxième Notebook query les données enregistrées et affiche des décomptes agrégés des noms de bébés par prénom et par sexe pour 2014.
-
À partir de la racine du répertoire, créez le premier Notebook, un fichier nommé
retrieve-baby-names.py. -
Ajoutez le code suivant au fichier
retrieve-baby-names.py:Python# Databricks notebook source
import requests
response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
csvfile = response.content.decode('utf-8')
dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True) -
Créez le deuxième Notebook, un fichier nommé
filter-baby-names.py, dans le même répertoire. -
Ajoutez le code suivant au fichier
filter-baby-names.py:Python# Databricks notebook source
babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
babynames.createOrReplaceTempView("babynames_table")
years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
years.sort()
dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
Étape 3 : Ajoutez un fichier de schéma de configuration de bundle au projet
Si vous utilisez un IDE tel que Visual Studio Code, PyCharm Professional ou IntelliJ IDEA Ultimate qui prend en charge les fichiers YAML et les fichiers de schéma JSON, vous pouvez utiliser votre IDE non seulement pour créer le fichier de schéma de configuration du bundle, mais aussi pour vérifier la syntaxe et le formatage du fichier de configuration du bundle de votre projet.
- Visual Studio Code
- PyCharm Professional
- IntelliJ IDEA Ultimate
-
Ajoutez la prise en charge du serveur de langage YAML à Visual Studio Code, par exemple en installant l'extension YAML depuis le Visual Studio Code Marketplace.
-
Générez le fichier de schéma JSON de configuration de bundle en utilisant l'interface CLI de Databricks pour exécuter la commande
bundle schemaet rediriger la sortie vers un fichier JSON. Par exemple, générez un fichier nommébundle_config_schema.jsondans le répertoire actuel, comme suit :Bashdatabricks bundle schema > bundle_config_schema.json -
À l'étape 4, vous ajouterez le commentaire suivant au début de votre fichier de configuration de bundle, qui associe votre fichier de configuration de bundle au fichier de schéma JSON spécifié :
YAML# yaml-language-server: $schema=bundle_config_schema.json
Dans le commentaire précédent, si votre fichier de schéma JSON de configuration de bundle se trouve dans un chemin différent, remplacez bundle_config_schema.json par le chemin complet de votre fichier de schéma.
-
Générez le fichier de schéma JSON de configuration de bundle à l'aide de l'interface CLI Databricks pour exécuter la commande
bundle schemaet rediriger la sortie vers un fichier JSON. Par exemple, générez un fichier nommébundle_config_schema.jsondans le répertoire actuel, comme suit :Bashdatabricks bundle schema > bundle_config_schema.json -
Configurez PyCharm pour qu'il reconnaisse le fichier de schéma JSON de configuration de bundle, puis complétez le mappage de schéma JSON, en suivant les instructions de Configurer un schéma JSON personnalisé.
-
A l'étape 4, vous utiliserez PyCharm pour créer ou ouvrir un fichier de configuration de bundle. Par convention, ce fichier est nommé
databricks.yml.
-
Générez le fichier de schéma JSON de configuration de bundle en utilisant l'interface CLI de Databricks pour exécuter la commande
bundle schemaet rediriger la sortie vers un fichier JSON. Par exemple, générez un fichier nommébundle_config_schema.jsondans le répertoire actuel, comme suit :Bashdatabricks bundle schema > bundle_config_schema.json -
Configurez IntelliJ IDEA pour reconnaître le fichier de schéma JSON de configuration de bundle, puis complétez le mappage de schéma JSON, en suivant les instructions de Configurer un schéma JSON personnalisé.
-
À l'Étape 4, vous utiliserez IntelliJ IDEA pour créer ou ouvrir un fichier de configuration de bundle. Par convention, ce fichier est nommé
databricks.yml.
Étape 4 : Ajouter un fichier de configuration de bundle au projet
Dans cette étape, vous définissez comment déployer et exécuter les deux notebooks. Pour cette démo, vous souhaitez utiliser un Job Databricks pour exécuter le premier notebook, puis le second notebook. Étant donné que le premier notebook enregistre les données et que le second notebook interroge les données enregistrées, vous voulez que le premier notebook termine son exécution avant que le second notebook ne start. Vous modélisez ces objectifs dans un fichier de configuration de bundle dans votre projet.
- À partir de la racine du répertoire, créez le fichier de configuration du bundle, un fichier nommé
databricks.yml. - Ajoutez le code suivant au fichier
databricks.yml, en remplaçant<workspace-url>par l'URL de votre workspace, par exemplehttps://dbc-a1b2345c-d6e7.cloud.databricks.com. Cette URL doit correspondre à celle de votre fichier.databrickscfg:
La première ligne, commençant par # yaml-language-server, n'est requise que si votre IDE le prend en charge. Voir l'étape 3 ci-dessus pour plus de détails.
# yaml-language-server: $schema=bundle_config_schema.json
bundle:
name: baby-names
resources:
jobs:
retrieve-filter-baby-names-job:
name: retrieve-filter-baby-names-job
job_clusters:
- job_cluster_key: common-cluster
new_cluster:
spark_version: 12.2.x-scala2.12
node_type_id: i3.xlarge
num_workers: 1
tasks:
- task_key: retrieve-baby-names-task
job_cluster_key: common-cluster
notebook_task:
notebook_path: ./retrieve-baby-names.py
- task_key: filter-baby-names-task
depends_on:
- task_key: retrieve-baby-names-task
job_cluster_key: common-cluster
notebook_task:
notebook_path: ./filter-baby-names.py
targets:
development:
workspace:
host: <workspace-url>
Pour personnaliser les Jobs, les mappages d'une déclaration de Job correspondent à la charge utile de la requête, exprimée au format YAML, de l'opération de création de Job telle que documentée dans POST /api/2.1/jobs/create dans la référence de l'API REST.
Vous pouvez définir, combiner et remplacer les paramètres des nouveaux clusters de job dans les bundles en utilisant les techniques décrites dans Remplacer avec les paramètres cibles.
Étape 5 : Valider le fichier de configuration du bundle du projet
Dans cette étape, vous vérifiez si la configuration du bundle est valide.
-
Utilisez la Databricks CLI pour exécuter la commande
bundle validate, comme suit :Bashdatabricks bundle validate -
Si un résumé de la configuration du bundle est renvoyé, la validation a réussi. Si des erreurs sont renvoyées, corrigez-les, puis répétez cette étape.
Si vous apportez des modifications à votre bundle après cette étape, vous devez répéter cette étape pour vérifier si la configuration de votre bundle est toujours valide.
Étape 6 : Déployer le projet local vers le workspace distant
Dans cette étape, vous déployez les deux notebooks locaux sur votre espace de travail Databricks distant et créez la Job Databricks dans votre espace de travail.
-
Utilisez le CLI Databricks pour exécuter la commande
bundle deploycomme suit :Bashdatabricks bundle deploy -t development -
Vérifiez si les deux notebooks locaux ont été déployés : dans la barre latérale de votre Workspace Databricks, cliquez sur Workspace .
-
Cliquez dans le dossier Utilisateurs >
<your-username>> .bundle > baby-names > développement > fichiers . Les deux Notebooks devraient être dans ce dossier. -
Vérifiez si le Job a été créé : Dans la barre latérale de votre Databricks Workspace, cliquez sur Jobs & Pipelines .
-
Facultativement, sélectionnez les filtres **Jobs** et **Appartenant à moi**.
-
Cliquez sur retrieve-filter-baby-names-Job .
-
Cliquez sur l'onglet **tab**. Il devrait y avoir deux tâches : retrieve-baby-names-task et filter-baby-names-task .
Si vous apportez des modifications à votre bundle après cette étape, vous devez répéter les étapes 6 et 7 pour vérifier si la configuration de votre bundle est toujours valide, puis redéployer le projet.
Étape 7ᵉ : Exécutez le projet déployé
À cette étape, vous exécutez le Job Databricks dans votre Workspace.
-
Utilisez la Databricks CLI pour exécuter la commande
bundle run, comme suit :Bashdatabricks bundle run -t development retrieve-filter-baby-names-job -
Copiez la valeur de
Run URLqui apparaît dans votre terminal et collez cette valeur dans votre navigateur web pour ouvrir votre workspace Databricks. -
Dans votre Workspace Databricks, une fois que les deux tâches sont terminées avec succès et affichent des barres de titre vertes, cliquez sur la tâche filter-baby-names-task pour voir les résultats de la query.
Si vous apportez des modifications à votre bundle après cette étape, vous devez répéter les étapes 6 à 8 pour vérifier si la configuration de votre bundle est toujours valide, redéployer le projet et exécuter le projet redéployé.
Étape 8 : Nettoyage
À cette étape, vous supprimez les deux notebooks déployés et le job de votre workspace.
-
Utilisez la Databricks CLI pour exécuter la commande
bundle destroy, comme suit :Bashdatabricks bundle destroy -
Confirmer la demande de suppression du job : Lorsque vous êtes invité à détruire définitivement les ressources, saisissez
yet appuyez surEnter. -
Confirmez la requête de suppression des Notebooks : Lorsque vous êtes invité à détruire définitivement le dossier précédemment déployé et tous ses fichiers, tapez
yet appuyez surEnter.
L'exécution de la commande bundle destroy supprime uniquement le Job déployé et le dossier contenant les deux notebooks déployés. Cette commande ne supprime aucun effet secondaire, tel que le fichier babynames.csv que le premier notebook a créé. Pour supprimer le fichier babybnames.csv, procédez comme suit :
- Dans la barre latérale de votre workspace Databricks, cliquez sur **Catalogue**.
- Cliquez sur **Parcourir DBFS**.
- Cliquez sur le dossier FileStore .
- Cliquez sur la flèche du menu déroulant à côté de babynames.csv , et cliquez sur Supprimer .
- Si vous souhaitez également supprimer le bundle de votre machine de développement, vous pouvez maintenant supprimer le répertoire local de l'étape 1.
Étapes suivantes
- Modifiez la configuration du Job pour l'exécuter sur le compute Serverless. Consultez Job qui utilise le compute Serverless.
- Activez la récupération dynamique des valeurs à l'aide de variables personnalisées. Consultez les variables personnalisées.
- Remplacer les paramètres pour des cibles de déploiement spécifiques. Voir Remplacer avec les paramètres cibles.