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 import
instruction et plusieurs bibliothèques du même nom existent, Databricks utilise des règles de précédence pour déterminer la bibliothèque à charger. Consultez Priorité de la bibliothèque Python.
Rechargement automatique pour les modules Python
Si vous modifiez plusieurs fichiers lors du développement de code Python, vous pouvez activer l’extension autoreload
pour recharger automatiquement les modules importés afin que les exécutions de commandes récupèrent ces modifications. Utilisez les commandes suivantes dans n’importe quelle cellule de bloc-notes ou fichier Python pour activer l’extension autoreload
:
%load_ext autoreload
%autoreload 2
L’extension autoreload
fonctionne uniquement dans le processus du pilote Spark et ne recharge pas le code dans les processus d’exécuteur Spark. Étant donné qu’il fonctionne uniquement sur le nœud de pilote Spark et non sur les nœuds exécutant l’exécuteur Spark, vous ne devez pas utiliser autoreload
lors du développement de modules qui s’exécutent sur des nœuds Worker (par exemple, des fonctions définies par l’utilisateur).
Dans Databricks Runtime 16.0 et versions ultérieures, l’extension autoreload
dans Databricks ajoute les fonctionnalités suivantes :
- Prise en charge du rechargement ciblé des modules pour les modifications internes aux fonctions. Le rechargement uniquement de la partie modifiée d’un module dans la mesure du possible garantit qu’il n’existe qu’une seule instance visible en externe de chaque objet, ce qui est plus sûr et plus fiable.
- Lorsque vous importez un module Python à partir d’un fichier d’espace de travail, Databricks suggère automatiquement d’utiliser
autoreload
si le module a changé depuis sa dernière importation.
Pour en savoir plus sur l’extensionautoreload
, consultez la documentation sur le rechargement automatique IPython.
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 :
- Créez un fichier de code source pour votre code.
- 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 conserver vos blocs-notes et d’autres modules de code synchronisés, ce qui garantit que votre bloc-notes utilise toujours la version correcte.
%run
les commandes vous permettent d’inclure un bloc-notes dans un autre et sont souvent utilisées pour rendre le code Python ou R pris en charge disponible pour un bloc-notes. 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. Toutefois, ce processus peut être fastidieux et sujette aux erreurs pour le code fréquemment mis à jour. Les fichiers d’espace de travail vous permettent de conserver ces fichiers Python dans le même répertoire que les notebooks qui utilisent le code, ce qui garantit que votre bloc-notes utilise toujours la version correcte.
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 le terminal web Azure Databricks pour tester les modifications apportées à votre code Python ou R sans utiliser de notebook pour importer et exécuter le fichier.
- Ouvrez un terminal web.
- Accédez au répertoire :
cd /Workspace/Users/<path-to-directory>/
. - Exécutez le fichier Python ou R :
python file_name.py
ouRscript file_name.r
.