Utiliser des modules Python et R

Cet article explique comment utiliser des chemins d’accès relatifs pour importer des modules Python et R personnalisés stockés dans des fichiers d’espace de travail avec vos notebooks Databricks. Les fichiers d’espace de travail peuvent faciliter des cycles de vie de développement plus étroits, ce qui vous permet de modulariser votre code, de convertir des commandes %run en instructions d’importation et de refactoriser les fichiers wheel Python en modules co-versionnés. Vous pouvez également utiliser le terminal web Databricks intégré pour tester votre code.

Remarque

Dans Databricks Runtime 14.0 et versions ultérieures, le répertoire de travail actuel (CWD) par défaut pour le code exécuté localement est le répertoire contenant le notebook ou le script en cours d'exécution. Il s’agit d’un changement de comportement de Databricks Runtime 13.3 LTS et versions antérieures. Consultez Quel est le répertoire de travail actuel par défaut ?.

Importer des modules Python et R

Important

Dans Databricks Runtime 13.3 LTS et versions ultérieures, les répertoires ajoutés à la base de données Python sys.path, ou les répertoires qui sont structurés comme des paquets Python, sont automatiquement distribués à tous les exécuteurs dans le cluster. Dans Databricks Runtime 12.2 LTS et versions ultérieures, les bibliothèques ajoutées à sys.path doivent être installées explicitement sur les exécuteurs.

Dans Databricks Runtime 11.3 LTS et versions ultérieures, le répertoire de travail actuel de votre notebook est automatiquement ajouté au chemin Python. Si vous utilisez Dossiers Git, le répertoire de référentiel racine est ajouté.

Pour importer des modules à partir d’un autre répertoire, vous devez ajouter le répertoire contenant le module à sys.path. Vous pouvez spécifier des répertoires à l’aide d’un chemin relatif, comme dans l’exemple suivant :

import sys
import os
sys.path.append(os.path.abspath('..'))

Vous importez des fonctions à partir d’un module stocké dans des fichiers d’espace de travail comme vous le feriez à partir d’un module enregistré en tant que bibliothèque de cluster ou bibliothèque étendue au notebook :

Python

from sample import power
power.powerOfTwo(3)

R

source("sample.R")
power.powerOfTwo(3)

Important

Lorsque vous utilisez une instruction import, Databricks suit une priorité définie s’il existe plusieurs bibliothèques du même nom. Consultez Priorité de la bibliothèque Python.

Rechargement automatique pour les modules Python

Si vous modifiez plusieurs fichiers quand vous développez du code Python, vous pouvez utiliser les commandes suivantes dans n’importe quelle cellule de notebook ou fichier python pour forcer le rechargement de tous les modules :

%load_ext autoreload
%autoreload 2

Notez que le rechargement automatique fonctionne uniquement sur le pilote et ne recharge pas le code dans l’exécuteur pour les fonctions définies par l’utilisateur.

Refactoriser le code

Une meilleure pratique pour le développement de code consiste à modulariser le code afin qu’il soit facilement réutilisable. Vous pouvez créer des fichiers Python personnalisés avec des fichiers d’espace de travail et rendre leur code accessible à un notebook à l’aide de l’instruction import.

Pour refactoriser le code d’un notebook en fichiers réutilisables :

  1. Créez un fichier de code source pour votre code.
  2. Ajoutez des instructions d’importation Python au notebook afin de rendre le code de votre nouveau fichier disponible pour le notebook.

Migrer à partir de commandes %run

Si vous utilisez des commandes %run pour rendre des fonctions Python ou R définies dans un notebook disponibles pour un autre notebook, ou si vous installez des fichiers .whl personnalisés sur un cluster, songez à inclure ces modules personnalisés en tant que fichiers de l’espace de travail. De cette façon, vous pouvez synchroniser vos notebooks et autres modules de code en veillant à ce que votre notebook utilise toujours la version appropriée.

Les commandes %run vous permettent d’inclure un notebook dans un autre, et sont souvent utilisées pour rendre le code Python ou R connexe disponible pour un notebook. Dans cet exemple, un notebook nommé power.py contient le code ci-dessous.

# This code is in a notebook named "power.py".
def n_to_mth(n,m):
  print(n, "to the", m, "th power is", n**m)

Vous pouvez ensuite rendre les fonctions définies dans power.py disponibles pour un autre notebook à l’aide d’une commande %run :

# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)

À l’aide de la fonctionnalité Fichiers d’espace de travail, vous pouvez importer directement le module contenant le code Python et exécuter la fonction.

from power import n_to_mth
n_to_mth(3, 4)

Refactoriser des fichiers Python .whl dans des bibliothèques relatives

Vous pouvez installer des fichiers .whl personnalisés sur un cluster, puis les importer dans un notebook attaché à celui-ci. Pour le code fréquemment mis à jour, ce processus peut être fastidieux et sujet aux erreurs. La fonctionnalité Fichiers d’espace de travail vous permet de conserver ces fichiers Python dans le même répertoire avec les notebooks qui utilisent le code, en veillant à ce que votre notebook utilise toujours la version appropriée.

Pour plus d’informations sur l’empaquetage de projets Python, consultez ce tutoriel.

Utiliser un terminal web Azure Databricks pour les tests

Vous pouvez utiliser un terminal Web Azure Databricks pour tester les modifications apportées à votre code Python ou R sans avoir à importer le fichier dans un notebook et à exécuter celui-ci.

  1. Ouvrez un terminal web.
  2. Accédez au répertoire : cd /Workspace/Users/<path-to-directory>/.
  3. Exécutez le fichier Python ou R : python file_name.py ou Rscript file_name.r.