Aller au contenu principal

Utiliser un artefact privé dans un bundle

Les fichiers et artefacts stockés dans des outils tiers tels que JFrog Artifactory ou dans des repositories privés peuvent devoir faire partie de vos Declarative Automation Bundles. Cet article décrit comment gérer ces fichiers. Pour plus d’information sur les Declarative Automation Bundles, consultez Que sont les Declarative Automation Bundles ?.

Pour un exemple de bundle qui utilise une roue privée, consultez le repository GitHub bundle-examples.

astuce

Si vous utilisez des Notebooks, vous pouvez installer des roues Python à partir d'un repository privé dans un Notebook, puis ajouter un notebook_task au Job dans votre bundle. Voir bibliothèques Python délimitées par un Notebook.

Download l'artefact localement

Pour gérer un artefact privé à l'aide de Declarative Automation Bundles, vous devez d'abord le download localement. Ensuite, vous pouvez le référencer dans votre bundle et le déployer dans le Workspace en tant que partie du bundle, ou vous pouvez l'upload vers Unity Catalog et le référencer dans votre bundle.

Par exemple, la commande suivante download un Python wheel dans le répertoire dist :

Shell
pip download -d dist my-wheel==1.0

Vous pouvez également download un package PyPI privé, puis le copier dans le répertoire dist.

Bash
export PYPI_TOKEN=<YOUR TOKEN>
pip download -d dist my-package==1.0.0 --index-url https://$PYPI_TOKEN@<package-index-url> --no-deps

(Facultatif) upload l'artefact dans Unity Catalog

Une fois que vous avez download l'artefact, vous pouvez éventuellement copier l'artefact download vers votre volume Unity Catalog à l'aide de la CLI Databricks, afin qu'il puisse être référencé à partir de votre bundle au lieu d'être upload dans votre Workspace lorsque le bundle est déployé. L’exemple suivant copie un wheel vers un volume Unity Catalog :

Bash
databricks fs cp my-wheel-1.0-*.whl dbfs:/Volumes/myorg_test/myorg_volumes/packages
astuce

Les Bundles d'automatisation déclaratifs upload automatiquement tous les artefacts référencés dans le bundle vers Unity Catalog si vous définissez artifact_path dans la configuration de votre bundle à un chemin d'accès de volumes Unity Catalog.

Référencer l'artefact

Pour inclure l'artefact dans votre bundle, référencez-le dans votre configuration.

L'exemple de bundle suivant référence un fichier wheel dans le répertoire dist d'un job. Cette configuration upload la roue vers le Workspace lorsque le bundle est déployé.

YAML
resources:
jobs:
demo-job:
name: demo-job
tasks:
- task_key: python-task
new_cluster:
spark_version: 13.3.x-scala2.12
node_type_id: Standard_D4s_v5
num_workers: 1
spark_python_task:
python_file: ../src/main.py
libraries:
- whl: ../dist/my-wheel-1.0-*.whl

Si vous avez upload votre artefact vers un volume Unity Catalog, configurez votre job pour le référencer à cet emplacement :

YAML
resources:
jobs:
demo-job:
name: demo-job
tasks:
- task_key: python-task
new_cluster:
spark_version: 13.3.x-scala2.12
node_type_id: Standard_D4s_v5
num_workers: 1
spark_python_task:
python_file: ../src/main.py
libraries:
- whl: /Volumes/myorg_test/myorg_volumes/packages/my-wheel-1.0-py3-none-any.whl

Pour un Python wheel, il peut également être référencé dans un python_wheel_task pour un Job :

YAML
resources:
jobs:
demo-job:
name: demo-job
tasks:
- task_key: wheel_task
python_wheel_task:
package_name: my_package
entry_point: entry
job_cluster_key: Job_cluster
libraries:
- whl: ../dist/my-wheel-1.0-*.whl