Aller au contenu principal

Dépendances de bibliothèque des Bundles d'automatisation déclarative

Cette page décrit la syntaxe pour la déclaration des dépendances de bibliothèque des Bundles d'Automatisation Déclarative. Les bundles permettent la gestion programmatique des ressources Databricks. Consultez Qu’est-ce qu’un Declarative Automation Bundles ?.

En plus des Notebooks et des fichiers sources, vos Jobs, pipelines et autres charges de travail dépendront probablement de bibliothèques. Les dépendances de bibliothèque sont déclarées dans vos fichiers de configuration de bundle.

Les bundles prennent en charge les dépendances de bibliothèque suivantes :

  • Fichier Python wheel
  • Fichier JAR (Java ou Scala)
  • Packages PyPI, Maven ou CRAN

Pour Python, vous pouvez également spécifier des dépendances dans un fichier pyproject.toml et l'inclure dans votre bundle. Voir uv et pyproject.toml.

remarque

La prise en charge d'une bibliothèque dépend de la configuration du cluster et de la source de la bibliothèque. Pour des informations complètes sur la prise en charge des bibliothèques, consultez Installer les bibliothèques.

Fichier Python Wheel

Pour ajouter un fichier Python wheel à une tâche de Job, dans libraries, spécifiez un mappage whl pour chaque bibliothèque à installer. Vous pouvez installer un fichier wheel à partir de fichiers de Workspace, de volumes Unity Catalog, de cloud object storage ou d'un chemin de fichier local.

important

Les bibliothèques peuvent être installées à partir de DBFS lors de l’utilisation de Databricks Runtime 14.3 LTS et versions antérieures. Cependant, tout utilisateur de Workspace peut modifier les fichiers de bibliothèque stockés dans DBFS. Pour améliorer la sécurité des bibliothèques dans un Workspace Databricks, le stockage des fichiers de bibliothèque dans la racine DBFS est obsolète et désactivé par default dans Databricks Runtime 15.1 et versions ultérieures. Consultez Le stockage des bibliothèques dans la racine DBFS est déprécié et désactivé par default.

Au lieu de cela, Databricks recommande d’upload toutes les bibliothèques, y compris les bibliothèques Python, les fichiers JAR et les connecteurs Spark, dans les fichiers Workspace ou les volumes Unity Catalog, ou d’utiliser les repositories de packages de bibliothèques. Si votre charge de travail ne prend pas en charge ces modèles, vous pouvez également utiliser des bibliothèques stockées dans le stockage objet cloud.

L'exemple suivant montre comment installer trois fichiers Python wheel pour une tâche de Job.

  • Le premier fichier Python wheel a été préalablement upload vers le Databricks Workspace ou ajouté en tant qu'élément include dans le sync mapping, et se trouve dans le même dossier local que le fichier de configuration du bundle.
  • Le deuxième fichier Python wheel se trouve à l'emplacement spécifié des fichiers du workspace dans le workspace Databricks.
  • Le troisième fichier Python wheel a été précédemment uploadé vers le volume nommé my-volume dans le Workspace Databricks.
YAML
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- whl: ./my-wheel-0.1.0.whl
- whl: /Workspace/Shared/Libraries/my-wheel-0.0.1-py3-none-any.whl
- whl: /Volumes/main/default/my-volume/my-wheel-0.1.0.whl

Fichier JAR (Java ou Scala)

Pour ajouter un fichier JAR à une tâche de Job, dans libraries, spécifiez un mappage jar pour chaque bibliothèque à installer. Vous pouvez installer un JAR à partir des volumes Unity Catalog, du stockage d'objets cloud ou d'un chemin de fichier local.

important

Les bibliothèques peuvent être installées à partir de DBFS lors de l’utilisation de Databricks Runtime 14.3 LTS et versions antérieures. Cependant, tout utilisateur de Workspace peut modifier les fichiers de bibliothèque stockés dans DBFS. Pour améliorer la sécurité des bibliothèques dans un Workspace Databricks, le stockage des fichiers de bibliothèque dans la racine DBFS est obsolète et désactivé par default dans Databricks Runtime 15.1 et versions ultérieures. Consultez Le stockage des bibliothèques dans la racine DBFS est déprécié et désactivé par default.

Au lieu de cela, Databricks recommande d’upload toutes les bibliothèques, y compris les bibliothèques Python, les fichiers JAR et les connecteurs Spark, dans les fichiers Workspace ou les volumes Unity Catalog, ou d’utiliser les repositories de packages de bibliothèques. Si votre charge de travail ne prend pas en charge ces modèles, vous pouvez également utiliser des bibliothèques stockées dans le stockage objet cloud.

L'exemple suivant montre comment installer un fichier JAR qui a été précédemment upload vers le volume nommé my-volume dans le Workspace Databricks.

YAML
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- jar: /Volumes/main/default/my-volume/my-java-library-1.0.jar

Pour un exemple de configuration qui crée et déploie le JAR, consultez Bundle qui upload un fichier JAR vers Unity Catalog. Pour un tutoriel qui crée un projet de bundle qui construit et déploie un JAR Scala, consultez Construire un JAR Scala à l’aide de Declarative Automation Bundles.

Package PyPI

Pour ajouter un package PyPI à une définition de tâche de Job, dans libraries, spécifiez un mappage pypi pour chaque package PyPI à installer. Pour chaque mappage, spécifiez ce qui suit :

  • Pour package, spécifiez le nom du package PyPI à installer. Une spécification de version exacte facultative est également prise en charge.
  • En option, pour repo, spécifiez le repository où le package PyPI peut être trouvé. Si non spécifié, l'index pip par default est utilisé (https://pypi.org/simple/).

L'exemple suivant montre comment installer deux packages PyPI.

  • Le premier package PyPI utilise la version de package spécifiée et l'index pip default.
  • Le second package PyPI utilise la version de package spécifiée et l'index pip explicitement spécifié.
YAML
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- pypi:
package: wheel==0.41.2
- pypi:
package: numpy==1.25.2
repo: https://pypi.org/simple/

Package Maven

Pour ajouter un package Maven à une définition de tâche Job, dans libraries, spécifiez une correspondance maven pour chaque package Maven à installer. Pour chaque mappage, spécifiez ce qui suit :

  • Pour coordinates, spécifiez les coordonnées Maven de style Gradle pour le package.
  • En option, pour repo, spécifiez le référentiel Maven à partir duquel installer le package Maven. Si ce champ est omis, le repository central Maven et le repository de packages Spark sont recherchés.
  • En option, pour exclusions, spécifiez les dépendances à exclure explicitement. Consultez les exclusions de dépendances Maven.

L'exemple suivant montre comment installer deux packages Maven.

  • Le premier package Maven utilise les coordonnées de package spécifiées et recherche ce package dans le repository Central Maven et le repository de packages Spark.
  • Le deuxième package Maven utilise les coordonnées de package spécifiées, recherche ce package uniquement dans le repository Maven Central et n'inclut aucune des dépendances de ce package qui correspondent au modèle spécifié.
YAML
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- maven:
coordinates: com.databricks:databricks-sdk-java:0.8.1
- maven:
coordinates: com.databricks:databricks-dbutils-scala_2.13:0.1.4
repo: https://mvnrepository.com/
exclusions:
- org.scala-lang:scala-library:2.13.0-RC*

Python requirements.txt

remarque

uv est la méthode recommandée pour gérer les dépendances des bibliothèques Python. Voir uv et pyproject.toml.

Les dépendances de bibliothèque Python peuvent également être spécifiées dans un fichier requirements*.txt qui est inclus dans le cadre de la définition de la tâche de Job. Le chemin d'accès au fichier peut être un chemin local, un chemin de workspace ou un chemin de volume Unity Catalog.

YAML
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- requirements: ./local/path/requirements.txt

uv et pyproject.toml

Pour inclure des dépendances de bibliothèque Python à l'aide de uv, spécifiez-les dans le fichier pyproject.toml qui fait partie du bundle, puis définissez une dépendance d'environnement pour les inclure. Pour plus d'informations sur uv, consultez Introduction to uv.

Par exemple, le fichier pyproject.toml suivant ajoute numpy comme dépendance :

[project]
name = "test"
version = "0.0.1"
authors = [{ name = "someone@example.com" }]
requires-python = ">=3.10,<3.13"
dependencies = [
# Any dependencies for jobs and pipelines in this project can be added here
#
# LIMITATION: for pipelines, dependencies are cached during development;
# add dependencies to the 'environment' section of your pipeline.yml file instead

"numpy==1.25.2"
]

[dependency-groups]
dev = [
"pytest",
"ruff",
"databricks-dlt",
"databricks-connect>=15.4,<15.5",
"ipykernel",
]

[project.scripts]
main = "test.main:main"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.ruff]
line-length = 120

Modifiez maintenant votre configuration de ressources de bundle pour inclure chaque dépendance définie dans le pyproject.toml en ajoutant un environnement modifiable qui pointe vers le dossier où pyproject.toml est déployé, comme dans cet exemple de configuration de pipeline :

YAML
resources:
pipelines:
test_uv_etl:
name: test_uv_etl
catalog: ${var.catalog}
schema: ${var.schema}
serverless: true
root_path: '../src/test_uv_etl'

libraries:
- glob:
include: ../src/test_uv_etl/transformations/**

environment:
dependencies:
- --editable ${workspace.file_path}

Pour créer des artefacts de bundle à l'aide de uv:

YAML
# databricks.yml
...
artifacts:
python_artifact:
type: whl
build: uv build --wheel
...