Partager via


Créer un fichier de roue Python à l’aide de Bundles de ressources Databricks

Cette page explique comment générer, déployer et exécuter un fichier de roue Python à l’aide de Bundles de ressources Databricks. Veuillez consulter la section Que sont-les bundles de ressources Databricks ?

Pour obtenir un exemple de configuration qui génère un fichier JAR et le charge dans le catalogue Unity, consultez Bundle qui charge un fichier JAR dans le catalogue Unity.

Requirements

Créer l’offre groupée à l’aide d’un modèle

Créez le bundle à l’aide du modèle d’offre groupée par défaut Databricks Asset Bundles pour Python. Ce bundle se compose de fichiers à générer dans un fichier de roue Python et de la définition d’un travail Azure Databricks pour générer ce fichier de roue Python. Vous validez ensuite les fichiers, les déployez, puis compilez les fichiers déployés dans un fichier wheel Python depuis le job wheel Python dans votre espace de travail Azure Databricks.

Si vous souhaitez créer un bundle à partir de zéro, consultez Créer un bundle manuellement.

Étape 1 : Créer le bundle

Un bundle contient les ressources que vous souhaitez déployer et les paramètres des flux de travail que vous souhaitez exécuter.

  1. Utilisez votre terminal ou invite de commandes pour basculer vers un répertoire sur votre ordinateur de développement local qui contiendra le bundle généré du modèle.

  2. Utilisez la version CLI Databricks pour exécuter la commande bundle init :

    databricks bundle init
    
  3. Pour Template to use, conservez la valeur par défaut de default-python en appuyant sur Enter.

  4. Pour Unique name for this project, conservez la valeur par défaut de my_project ou saisissez une valeur différente, puis appuyez sur Enter. Cela détermine le nom du répertoire racine de ce bundle. Ce répertoire racine est créé dans votre répertoire de travail actuel.

  5. Pour Include a job that runs a notebook, sélectionnez no, puis appuyez sur Enter. Cela indique à la CLI Databricks de ne pas ajouter de notebook d’exemple à votre bundle.

  6. Pour Include an ETL pipeline, sélectionnez no, puis appuyez sur Enter. Cela indique à l’interface CLI Databricks de ne pas définir d’exemple de pipeline dans votre bundle.

  7. Pour Include a stub (sample) Python package, conservez la valeur par défaut de yes en appuyant sur Enter. Cela indique à la CLI Databricks d’ajouter les fichiers d’exemple du package wheel Python ainsi que les instructions de build associées à votre bundle.

  8. Pour Use serverless, sélectionnez yes, puis appuyez sur Enter. Cela indique à l’interface CLI Databricks de configurer votre bundle pour qu’il s’exécute sur le calcul sans serveur.

  9. Pour Default catalog for any tables created by this project [hive_metastore], entrez le nom d’un catalogue Unity Catalog existant.

  10. Pour Use a personal schema for each user working on this project., sélectionnez yes.

Étape 2 : Explorer le bundle

Pour afficher les fichiers générés par le modèle, basculez vers le répertoire racine de votre bundle nouvellement créé et ouvrez ce répertoire avec votre IDE préféré. Les fichiers particulièrement importants sont les suivants :

  • databricks.yml: ce fichier spécifie le nom du bundle, inclut des références aux fichiers du bundle, spécifie les whl paramètres de génération, définit les variables de catalogue et de schéma et spécifie les paramètres des espaces de travail cibles.
  • resources/sample_job.job.yml: ce fichier spécifie les paramètres du job wheel Python. Pour plus d’informations sur les paramètres de travail, consultez travail.
  • src/: ce dossier inclut les fichiers utilisés par le travail de roue Python pour générer le fichier wheel Python.
  • tests/: ce dossier contient des exemples de tests unitaires.
  • README.md: ce fichier contient des informations supplémentaires sur la prise en main et l’utilisation de ce modèle groupé.

Note

Si vous souhaitez installer le fichier de roue Python sur un cluster avec Databricks Runtime 12.2 LTS ou ci-dessous, vous devez ajouter le mappage de niveau supérieur suivant au databricks.yml fichier :

# Applies to all tasks of type python_wheel_task.
experimental:
  python_wheel_wrapper: true

Étape 3 : Valider la configuration de l’offre groupée

Vérifiez maintenant si la configuration de l’offre groupée est valide.

  1. À partir du répertoire racine, utilisez l’interface CLI Databricks pour exécuter la bundle validate commande :

    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.

Étape 4 : Déployer le bundle sur l’espace de travail distant

Ensuite, déployez l’offre groupée sur votre espace de travail Azure Databricks distant. Cette opération génère le fichier de roue Python. Vérifiez qu’un travail Azure Databricks est créé dans votre espace de travail.

  1. À partir de la racine du bundle, utilisez la CLI Databricks pour exécuter la commande bundle deploy :

    databricks bundle deploy --target dev
    
  2. Vérifiez que le fichier de roue Python généré localement a été déployé :

    1. Dans la barre latérale de votre espace de travail Azure Databricks, cliquez sur Espace de travail.
    2. Cliquez dans le dossier suivant : Workspace > Users ><your-username>> .bundle ><project-name>> dev > artifacts > .internal ><whl-file-name>.whl.

    Le fichier wheel Python devrait se trouver dans ce dossier.

  3. Vérifiez si la tâche a été créée :

    1. Dans la barre latérale de votre espace de travail Azure Databricks, cliquez sur Travaux & Pipelines.
    2. Vous pouvez aussi sélectionner les filtres Travaux et Je suis le propriétaire.
    3. Cliquez sur [dev <your-username>] sample_job.
    4. Cliquez sur l’onglet Tâches . Il devrait y avoir un python_wheel_task.

Si vous apportez des modifications à votre offre groupée après cette étape, répétez les étapes 3 à 4 pour vérifier si votre configuration de bundle est toujours valide, puis redéployez le projet.

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

À présent, déclenchez une exécution du travail Azure Databricks dans votre espace de travail.

  1. À partir du répertoire racine, utilisez l’interface CLI Databricks pour exécuter la bundle run commande :

    databricks bundle run --target dev sample_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 la tâche terminée avec succès et qu'elle affiche une barre de titre verte, cliquez sur la tâche du travail pour voir les résultats.

Créer le fichier whl à l'aide de Poetry ou setuptools

Lorsque vous utilisez databricks bundle init le modèle python par défaut, un bundle est créé qui montre comment configurer un bundle qui génère une roue Python à l’aide uv et pyproject.toml. Toutefois, vous voudrez peut-être utiliser la poésie ou setuptools plutôt pour construire une roue.

Installer Poetry ou setuptools

  1. Installer Poetry ou setuptools:

    Poetry

    • Installez Poetry, version 1.6 ou ultérieure, si elle n’est pas déjà installée. Pour vérifier la version de Poetry installée, exécutez la commande poetry -V ou poetry --version.
    • Assurez-vous que Python version 3.10 (ou une version supérieure) est installé. Pour vérifier votre version de Python, exécutez la commande python -V ou python --version.

    Setuptools

    Installez les packages wheel et setuptools s'ils ne sont pas déjà installés, en exécutant la commande suivante :

    pip3 install --upgrade wheel setuptools
    
  2. Si vous envisagez de stocker ce bundle avec un fournisseur Git, ajoutez un .gitignore fichier à la racine du projet et ajoutez les entrées suivantes à ce fichier :

    Poetry

    .databricks
    dist
    

    Setuptools

    .databricks
    build
    dist
    src/my_package/my_package.egg-info
    

Ajouter des fichiers de build

  1. Dans la racine de votre bundle, créez les dossiers et fichiers suivants, selon que vous utilisez Poetry ou setuptools pour créer les fichiers wheel Python :

    Poetry

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── pyproject.toml
    

    Setuptools

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── setup.py
    
  2. Ajoutez le code suivant au fichier pyproject.toml ou setup.py.

    Pyproject.toml

    [tool.poetry]
    name = "my_package"
    version = "0.0.1"
    description = "<my-package-description>"
    authors = ["my-author-name <my-author-name>@<my-organization>"]
    
    [tool.poetry.dependencies]
    python = "^3.10"
    
    [build-system]
    requires = ["poetry-core"]
    build-backend = "poetry.core.masonry.api"
    
    [tool.poetry.scripts]
    main = "my_package.main:main"
    
    • Remplacez my-author-name le nom de contact principal de votre organisation.
    • Remplacez my-author-name>@<my-organization par l’adresse de contact de messagerie principale de votre organisation.
    • Remplacez <my-package-description> par une description de l'affichage de votre fichier wheel Python.

    Setup.py

    from setuptools import setup, find_packages
    
    import src
    
    setup(
      name = "my_package",
      version = "0.0.1",
      author = "<my-author-name>",
      url = "https://<my-url>",
      author_email = "<my-author-name>@<my-organization>",
      description = "<my-package-description>",
      packages=find_packages(where='./src'),
      package_dir={'': 'src'},
      entry_points={
        "packages": [
          "main=my_package.main:main"
        ]
      },
      install_requires=[
        "setuptools"
      ]
    )
    
    • Remplacez https://<my-url> par l’URL de votre organisation.
    • Remplacez <my-author-name> le nom de contact principal de votre organisation.
    • Remplacez <my-author-name>@<my-organization> par l’adresse de contact de messagerie principale de votre organisation.
    • Remplacez <my-package-description> par une description de l'affichage de votre fichier wheel Python.

Ajouter une configuration groupée d’artefacts

  1. Ajoutez la configuration de mappage artifacts à votre databricks.yml pour créer l’artifact whl :

    Poetry

    Cette configuration exécute la poetry build commande et indique que le chemin d’accès au pyproject.toml fichier se trouve dans le même répertoire que le databricks.yml fichier.

    Note

    Si vous avez déjà créé un fichier wheel Python et souhaitez uniquement le déployer, modifiez le fichier de configuration de bundle suivant en omettant la correspondance artifacts. L’interface CLI Databricks suppose ensuite que le fichier de roue Python est déjà généré et déploie automatiquement les fichiers spécifiés dans les libraries entrées du whl tableau.

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: poetry build
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>
    

    Setuptools

    Cette configuration exécute la setuptools commande et indique que le chemin d’accès au setup.py fichier se trouve dans le même répertoire que le databricks.yml fichier.

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: python3 setup.py bdist wheel
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>