Créer un fichier Python wheel à l'aide de Declarative Automation Bundles
Cette page décrit comment créer, déployer et exécuter un fichier Python wheel à l'aide de Declarative Automation Bundles. Consultez Que sont les Declarative Automation Bundles ?
Pour une configuration exemple qui construit un JAR et l'importe dans Unity Catalog, consultez Bundle qui upload un fichier JAR dans Unity Catalog.
Exigences
- Databricks CLI version 0,218.0 ou supérieure est installée, et l'authentification est configurée. Pour vérifier la version installée de la Databricks CLI, exécutez la commande
databricks -v. Pour installer la CLI Databricks, consultez Installer ou mettre à jour la CLI Databricks. Pour configurer l'authentification, consultez Configurez l'accès à votre Workspace. - uv est nécessaire pour exécuter les tests et installer les dépendances de ce projet depuis un IDE.
- Le workspace distant doit avoir les fichiers de workspace activés. Consultez Qu'est-ce qu'un fichier de workspace ?.
- Un catalogue existant. Pour créer un catalogue, consultez Créer des catalogues.
Créez le bundle à l'aide d'un Template
Créez le bundle à l'aide du default bundle Template des Declarative Automation Bundles pour Python. Cet ensemble se compose de fichiers à compiler en fichier Python wheel et de la définition d'un Job Databricks pour compiler ce fichier Python wheel. Vous validez, déployez et créez ensuite les fichiers déployés dans un fichier Python wheel à partir du Job Python wheel au sein de votre Workspace Databricks.
Si vous souhaitez créer un bundle à partir de zéro, consultez Créer un bundle manuellement.
Étape 1 : Créez le bundle
Un bundle contient les assets que vous souhaitez déployer et les paramètres des workflows que vous souhaitez exécuter.
-
Utilisez votre terminal ou l’invite de commande pour passer à un répertoire de votre machine de développement locale qui contiendra le bundle généré par le Template.
-
Utilisez la version de Databricks CLI pour exécuter la commande
bundle init:Bashdatabricks bundle init -
Pour
Template to use, laissez la valeur par défaut dedefault-pythonen appuyant surEnter. -
Pour
Unique name for this project, laissez la valeur default demy_project, ou saisissez une valeur différente, puis appuyez surEnter. Ceci détermine le nom du répertoire racine de ce bundle. Ce répertoire racine est créé dans votre répertoire de travail actuel. -
Pour
Include a job that runs a notebook, sélectionneznoet appuyez surEnter. Ceci indique au CLI Databricks de ne pas ajouter d'exemple de Notebook à votre bundle. -
Pour
Include an ETL pipeline, sélectionneznoet appuyez surEnter. Cela indique au CLI Databricks de ne pas définir d'exemple de pipeline dans votre bundle. -
Pour
Include a stub (sample) Python package, conservez la valeur default deyesen appuyant surEnter. Ceci indique au CLI Databricks d’ajouter des exemples de fichiers de package Python wheel et des instructions de build associées à votre bundle. -
Pour
Use serverless, sélectionnezyeset appuyez surEnter. Ceci indique au CLI Databricks de configurer votre bundle pour qu'il s'exécute sur un compute serverless. -
Pour
Default catalog for any tables created by this project [hive_metastore], entrez le nom d'un catalogue Unity Catalog existant. -
Pour
Use a personal schema for each user working on this project., sélectionnezyes.
Étape 2 : Explorer le bundle
Pour afficher les fichiers générés par le Template, passez au répertoire racine de votre bundle nouvellement créé et ouvrez ce répertoire avec votre IDE préféré. Les fichiers présentant un intérêt particulier incluent les éléments suivants :
databricks.yml: Ce fichier spécifie le nom du bundle, inclut des références aux fichiers du bundle, spécifie les paramètres de constructionwhl, définit les variables de catalogue et de schéma, et spécifie les paramètres pour les Workspaces cibles.resources/sample_job.job.yml: Ce fichier spécifie les paramètres du job Python wheel. Pour plus d'informations sur les paramètres de job, consultez Job.src/: Ce dossier contient les fichiers que le Job Python wheel utilise pour créer le fichier Python wheel.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 Template de bundle.
Si vous souhaitez installer le Python Wheel sur un cluster avec Databricks Runtime 12.2 LTS ou les versions antérieures, vous devez ajouter le mappage de premier niveau suivant au fichier databricks.yml :
# Applies to all tasks of type python_wheel_task.
experimental:
python_wheel_wrapper: true
Étape 3 : Valider la configuration du bundle
Vérifiez maintenant si la configuration du bundle est valide.
-
À partir du répertoire racine, utilisez la CLI Databricks pour exécuter la commande
bundle validate: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.
Étape 4 : Déployez le bundle vers le workspace distant
Ensuite, déployez le bundle sur votre Workspace Databricks distant. Ceci construit le fichier Python wheel. Vérifiez qu'un Job Databricks est créé dans votre Workspace.
-
Depuis la racine du bundle, utilisez la CLI Databricks pour exécuter la commande
bundle deploy:Bashdatabricks bundle deploy --target dev -
Confirmez que le fichier Python wheel construit localement a été déployé :
- Dans la barre latérale de votre Workspace Databricks, cliquez sur Workspace .
- Cliquez dans le dossier suivant : Workspace > Users >
<your-username>> .bundle ><project-name>> dev > artifacts > .internal ><whl-file-name>.whl.
Le fichier Python wheel doit se trouver dans ce dossier.
-
Vérifiez si le job a été créé :
- Dans la barre latérale de votre workspace Databricks, cliquez sur Tâches & Pipelines .
- Facultativement, sélectionnez les filtres **Jobs** et **Appartenant à moi**.
- Cliquez sur [dev
<your-username>]sample_job. - Cliquez sur l'onglet **tab**. Il doit y avoir une python_wheel_task .
Si vous apportez des modifications à votre bundle après cette étape, répétez les étapes 3 et 4 pour vérifier si la configuration de votre bundle est toujours valide, puis redéployez le projet.
Étape 5 : Exécutez le projet déployé.
Trigger maintenant une exécution du Job Databricks dans votre Workspace.
-
À partir du répertoire racine, utilisez la CLI Databricks pour exécuter la commande
bundle run:Bashdatabricks bundle run --target dev sample_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 Databricks workspace, une fois la tâche terminée avec succès et qu’une barre de titre verte s’affiche, cliquez sur la tâche de job pour voir les résultats.
Créez le whl à l'aide de Poetry ou de setuptools
Lorsque vous utilisez databricks bundle init avec le template Python par default, un bundle est créé qui montre comment configurer un bundle qui crée un Python wheel à l'aide de uv et pyproject.toml. Cependant, vous pourriez vouloir utiliser Poetry ou setuptools à la place pour construire une roue.
Installez Poetry ou setuptools
- Installez Poetry ou
setuptools:
- Poetry
- Setuptools
- Installez Poetry, version 1.6 ou supérieure, s'il n'est pas déjà installé. Pour vérifier la version installée de Poetry, exécutez la commande
poetry -Voupoetry --version. - Assurez-vous que Python version 3.10 ou supérieure est installé. Pour vérifier votre version de Python, exécutez la commande
python -Voupython --version.
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
- Si vous avez l’intention de stocker ce bundle chez un fournisseur Git, ajoutez un fichier
.gitignoreà la racine du projet, et ajoutez les entrées suivantes à ce fichier :
- Poetry
- Setuptools
.databricks
dist
.databricks
build
dist
src/my_package/my_package.egg-info
Ajouter des fichiers de build
- À la racine de votre bundle, créez les dossiers et fichiers suivants, selon que vous utilisez Poetry ou
setuptoolspour créer des fichiers Python wheel :
- Poetry
- Setuptools
├── src
│ └── my_package
│ ├── __init__.py
│ ├── main.py
│ └── my_module.py
└── pyproject.toml
├── src
│ └── my_package
│ ├── __init__.py
│ ├── main.py
│ └── my_module.py
└── setup.py
- Ajoutez le code suivant au fichier
pyproject.tomlousetup.py:
- Pyproject.toml
- Setup.py
[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-namepar le nom du contact principal de votre organisation. - Remplacez
my-author-name>@<my-organizationpar l'adresse e-mail de contact principale de votre organisation. - Remplacez
<my-package-description>par une description d'affichage pour votre fichier Python wheel.
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>par le nom du contact principal de votre organisation. - Remplacez
<my-author-name>@<my-organization>par l'adresse e-mail de contact principale de votre organisation. - Remplacez
<my-package-description>par une description d'affichage pour votre fichier Python wheel.
Ajouter la configuration du paquet d'artefacts
- Ajoutez la configuration de mappage
artifactsà votredatabricks.ymlpour créer l'artefactwhl:
- Poetry
- Setuptools
Cette configuration exécute la commande poetry build et indique que le chemin d’accès au fichier pyproject.toml se trouve dans le même répertoire que le fichier databricks.yml.
If you have already built a Python wheel file and just want to deploy it, then modify the following bundle configuration file by omitting the artifacts mapping. The Databricks CLI will then assume that the Python wheel file is already built and will automatically deploy the files that are specified in the libraries array's whl entries.
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: i3.xlarge
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>
Cette configuration exécute la commande setuptools et indique que le chemin d’accès au fichier setup.py se trouve dans le même répertoire que le fichier databricks.yml.
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: i3.xlarge
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>