Aller au contenu principal

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

É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.

  1. Créez ou identifiez un répertoire vide sur votre machine de développement.
  2. Basculez vers le répertoire vide dans votre terminal ou ouvrez-le dans votre IDE.
astuce

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.

  1. À partir de la racine du répertoire, créez le premier Notebook, un fichier nommé retrieve-baby-names.py.

  2. 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)
  3. Créez le deuxième Notebook, un fichier nommé filter-baby-names.py, dans le même répertoire.

  4. 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.

  1. 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.

  2. 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 schema et rediriger la sortie vers un fichier JSON. Par exemple, générez un fichier nommé bundle_config_schema.json dans le répertoire actuel, comme suit :

    Bash
    databricks bundle schema > bundle_config_schema.json
  3. À 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
remarque

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.

É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.

  1. À partir de la racine du répertoire, créez le fichier de configuration du bundle, un fichier nommé databricks.yml.
  2. Ajoutez le code suivant au fichier databricks.yml, en remplaçant <workspace-url> par l'URL de votre workspace, par exemple https://dbc-a1b2345c-d6e7.cloud.databricks.com. Cette URL doit correspondre à celle de votre fichier .databrickscfg :
astuce

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
# 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.

astuce

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.

  1. Utilisez la Databricks CLI pour exécuter la commande bundle validate, comme suit :

    Bash
    databricks bundle validate
  2. 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.

  1. Utilisez le CLI Databricks pour exécuter la commande bundle deploy comme suit :

    Bash
    databricks bundle deploy -t development
  2. Vérifiez si les deux notebooks locaux ont été déployés : dans la barre latérale de votre Workspace Databricks, cliquez sur Workspace .

  3. Cliquez dans le dossier Utilisateurs > <your-username> > .bundle > baby-names > développement > fichiers . Les deux Notebooks devraient être dans ce dossier.

  4. Vérifiez si le Job a été créé : Dans la barre latérale de votre Databricks Workspace, cliquez sur Jobs & Pipelines .

  5. Facultativement, sélectionnez les filtres **Jobs** et **Appartenant à moi**.

  6. Cliquez sur retrieve-filter-baby-names-Job .

  7. 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.

  1. Utilisez la Databricks CLI pour exécuter la commande bundle run, comme suit :

    Bash
    databricks bundle run -t development retrieve-filter-baby-names-job
  2. Copiez la valeur de Run URL qui apparaît dans votre terminal et collez cette valeur dans votre navigateur web pour ouvrir votre workspace Databricks.

  3. 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.

  1. Utilisez la Databricks CLI pour exécuter la commande bundle destroy, comme suit :

    Bash
    databricks bundle destroy
  2. Confirmer la demande de suppression du job : Lorsque vous êtes invité à détruire définitivement les ressources, saisissez y et appuyez sur Enter.

  3. 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 y et appuyez sur Enter.

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 :

  1. Dans la barre latérale de votre workspace Databricks, cliquez sur **Catalogue**.
  2. Cliquez sur **Parcourir DBFS**.
  3. Cliquez sur le dossier FileStore .
  4. Cliquez sur la flèche du menu déroulant à côté de babynames.csv , et cliquez sur Supprimer .
  5. 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