Partager via


Créer un bundle manuellement

Au cours de ce tutoriel, vous allez créer un bundle de ressources Databricks à partir de zéro. Ce bundle simple se compose de deux notebooks et de la définition d’un travail Azure Databricks pour exécuter ces notebooks. Vous validez, déployez et exécutez ensuite le travail dans l’espace de travail Azure Databricks. Ces étapes automatisent le démarrage rapide intitulé Créer votre premier flux de travail avec les travaux Lakeflow.

Spécifications

Étape 1 : Créer le bundle

Un bundle contient les artefacts que vous souhaitez déployer ainsi que les paramètres pour les ressources à exécuter.

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

Conseil

Vous pouvez également utiliser un annuaire contenant un dépôt cloné à partir d’un fournisseur Git. Cela vous permettra de gérer le bundle avec une gestion de version externe et de collaborer plus facilement avec d’autres développeurs et professionnels de l’informatique sur votre projet.

Si vous choisissez de cloner un dépôt pour cette démonstration, Databricks recommande qu’il soit vide ou qu’il ne contienne que des fichiers de base, comme README et .gitignore. Sinon, tous les fichiers préexistants dans le dépôt pourraient être synchronisés inutilement avec l’espace de travail Azure Databricks.

Étape 2 : Ajouter des notebooks au projet

Au cours de cette étape, vous allez ajouter deux notebooks à votre projet. Le premier bloc-notes obtient une liste des noms de bébés tendance depuis 2007 à partir des sources de données publiques du Département de la santé de New York. Voir les noms des bébés : Tendance par nom : début 2007 sur le site web du service. Le premier notebook enregistre ensuite ces données dans le volume Azure Databricks Unity Catalog nommé my-volume dans un schéma nommé default dans un catalogue nommé main. Le deuxième notebook interroge les données enregistrées et affiche des nombres agrégés de noms de bébé par prénom et sexe pour 2014.

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

  2. Ajoutez le code suivant au fichier retrieve-baby-names.py :

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

    # 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 : Ajouter un fichier de schéma de configuration du 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 pour créer non seulement le fichier de schéma de configuration de l’offre groupée, mais pour vérifier la syntaxe et la mise en forme du fichier de configuration groupé de votre projet.

Visual Studio Code

  1. Ajoutez la prise en charge du serveur de langage YAML à Visual Studio Code, par exemple en installant l’extension YAML à partir de la place de marché Visual Studio Code.

  2. Générez le fichier de schéma JSON de configuration du bundle de ressources Databricks en utilisant l’interface CLI 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 actif, comme suit :

    databricks bundle schema > bundle_config_schema.json
    
  3. À l’étape 4, vous allez ajouter le commentaire suivant au début de votre fichier de configuration groupé, qui associe votre fichier de configuration groupé au fichier de schéma JSON spécifié :

    # yaml-language-server: $schema=bundle_config_schema.json
    

    Note

    Dans le commentaire précédent, si votre fichier de schéma JSON de configuration du bundle de ressources Databricks se trouve dans un chemin d’accès différent, remplacez bundle_config_schema.json par le chemin d’accès complet au fichier de schéma.

PyCharm Professionnel

  1. Générez le fichier de schéma JSON de configuration du bundle de ressources Databricks en utilisant l’interface CLI 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 actif, comme suit :

    databricks bundle schema > bundle_config_schema.json
    
  2. Configurez PyCharm pour reconnaître le fichier de schéma JSON de configuration du bundle, puis effectuez la mise en correspondance du schéma JSON en suivant les instructions fournies dans Configurer un schéma JSON personnalisé.

  3. À l’étape 4, vous allez utiliser PyCharm pour créer ou ouvrir un fichier de configuration groupé. Par convention, ce fichier est nommé databricks.yml.

IntelliJ IDEA Ultimate

  1. Générez le fichier de schéma JSON de configuration du bundle de ressources Databricks en utilisant l’interface CLI 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 actif, comme suit :

    databricks bundle schema > bundle_config_schema.json
    
  2. Configurez IntelliJ IDEA pour reconnaître le fichier de schéma JSON de configuration du bundle, puis effectuez la mise en correspondance du schéma JSON en suivant les instructions fournies dans Configurer un schéma JSON personnalisé.

  3. À l’étape 4, vous allez utiliser IntelliJ IDEA pour créer ou ouvrir un fichier de configuration groupé. Par convention, ce fichier est nommé databricks.yml.

Étape 4 : Ajouter un fichier de configuration groupé au projet

Dans cette étape, vous allez définir le mode de déploiement et d’exécution des deux notebooks. Pour cette démonstration, vous allez utiliser un travail Azure Databricks pour exécuter le premier notebook, puis le deuxième notebook. Étant donné que le premier notebook enregistre les données et que le deuxième notebook interroge les données enregistrées, il faut que le premier notebook finisse son exécution avant que le deuxième démarre. 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 de bundle, un fichier nommé databricks.yml.
  2. Ajoutez le code suivant au fichier databricks.yml, en remplaçant <workspace-url> par votre URL par espace de travail, par exemple https://adb-1234567890123456.7.azuredatabricks.net. Cette URL doit correspondre à celle de votre fichier .databrickscfg :

Conseil

La première ligne, commençant par # yaml-language-server, est requise uniquement si l’IDE le permet. Pour plus d’informations, reportez-vous à l’étape 3.

# 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: Standard_DS3_v2
            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 la personnalisation des tâches, les mappages dans une déclaration de travail correspondent à la charge utile de la requête, exprimée au format YAML, de l’opération de création de travail telle que documentée dans POST /api/2.1/jobs/create dans la référence de l’API REST.

Conseil

Vous pouvez définir, combiner et remplacer les paramètres des nouveaux clusters de tâches dans des packages à l’aide des techniques décrites dans Substitution avec les paramètres cibles.

Étape 5 : Valider le fichier de configuration groupé du projet

Dans cette étape, vous vérifiez si la configuration du bundle est valide.

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

    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 modifiez votre bundle après cette étape, vous devez répéter cette étape pour vérifier que la configuration de votre bundle est toujours valide.

Étape 6 : Déployer le projet local sur l’espace de travail distant

Au cours de cette étape, vous déploierez deux notebooks locaux dans l’espace de travail Azure Databricks distant et créerez le travail Azure Databricks dans l’espace de travail.

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

    databricks bundle deploy -t development
    
  2. Vérifiez si les deux blocs-notes locaux ont été déployés : dans la barre latérale de votre espace de travail Azure Databricks, cliquez sur Espace de travail.

  3. Cliquez dans le dossier Users ><your-username>> .bundle > baby-names > development > files. Les deux blocs-notes devraient se trouver dans ce dossier.

  4. Vérifiez si le travail a été créé : dans la barre latérale de votre espace de travail Azure Databricks, cliquez sur Travaux & Pipelines.

  5. Vous pouvez aussi sélectionner les filtres Travaux et Je suis le propriétaire.

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

  7. Cliquez sur l’onglet Tâches. Il devrait y avoir deux tâches : retrieve-baby-names-task et filter-baby-names-task.

Si vous modifiez votre bundle après cette étape, vous devez répéter les étapes 6 à 7 pour vérifier que la configuration du bundle est toujours valide, puis redéployer le projet.

Étape 7 : Exécuter le projet déployé

Dans cette étape, vous exécutez le job Azure Databricks dans votre espace de travail.

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

    databricks bundle run -t development retrieve-filter-baby-names-job
    
  2. Copiez la valeur de Run URL qui s’affiche dans votre terminal et collez cette valeur dans votre navigateur pour ouvrir votre espace de travail Azure Databricks.

  3. Dans votre espace de travail Azure Databricks, une fois les deux tâches terminées avec succès et les barres de titre vertes affichées, cliquez sur la tâche filter-baby-names-task pour afficher les résultats de la requête.

Si vous modifiez votre bundle après cette étape, vous devez répéter les étapes 6 à 8 pour vérifier que la configuration de votre bundle est toujours valide, redéployer le projet et exécuter le projet redéployé.

Étape 8 : Nettoyer

Au cours de cette étape, vous supprimerez les deux notebooks déployés et le travail de votre espace de travail.

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

    databricks bundle destroy
    
  2. Confirmez la demande de suppression du travail : lorsque vous êtes invité à détruire définitivement des ressources, tapez y et appuyez sur Enter.

  3. Confirmez la demande 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 travail 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 créé par le premier notebook. Pour supprimer le fichier babybnames.csv, procédez comme suit :

  1. Dans la barre latérale de l’espace de travail Azure Databricks, cliquez sur Catalogue.
  2. Cliquez sur Parcourir DBFS.
  3. Cliquez sur le fichier FileStore.
  4. Cliquez sur la flèche déroulante à côté de babynames.csv, puis cliquez sur Supprimer.
  5. Si vous souhaitez également supprimer le bundle de votre ordinateur de développement, vous pouvez maintenant supprimer le répertoire local de l’étape 1.