Aller au contenu principal

Travailler avec les modules Python et R

Cet article explique comment vous pouvez utiliser des chemins relatifs pour importer des modules Python et R personnalisés stockés dans des fichiers Workspace avec vos notebooks Databricks. Les fichiers Workspace peuvent faciliter des cycles de développement plus courts, vous permettant de modulariser votre code, de convertir les commandes %run en instructions d'importation et de refactoriser les fichiers Python wheel 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 par default (CWD) 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 par rapport à Databricks Runtime 13.3 LTS et les versions antérieures. Consultez Qu'est-ce que le répertoire de travail actuel default ?.

Importer des modules Python et R

important

Dans Databricks Runtime 13.3 LTS et versions ultérieures, les répertoires ajoutés au sys.path Python, ou les répertoires structurés comme des packages Python, sont automatiquement distribués à tous les exécuteurs du cluster. Dans Databricks Runtime 12.2 LTS et versions antérieures, les bibliothèques ajoutées au sys.path doivent être explicitement installées 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 les dossiers Git, le répertoire racine du dépôt est ajouté.

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

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

Vous importez des fonctions à partir d'un module stocké dans les fichiers du Workspace, tout comme vous le feriez à partir d'un module enregistré en tant que bibliothèque de cluster ou bibliothèque à portée de notebook :

Python
from sample import power
power.powerOfTwo(3)
important

Lorsque vous utilisez une instruction import et que plusieurs bibliothèques du même nom existent, Databricks utilise des règles de priorité pour déterminer quelle bibliothèque charger. Voir la priorité des bibliothèques Python.

Rechargement automatique pour les modules Python

Si vous modifiez plusieurs fichiers tout en développant du code Python, vous pouvez activer l'extension autoreload pour recharger automatiquement tous les modules importés afin que les exécutions de commandes prennent en compte ces modifications. Utilisez les commandes suivantes dans n'importe quelle cellule de notebook ou fichier Python pour activer l'extension autoreload :

Python
%load_ext autoreload
%autoreload 2

L'extension autoreload ne fonctionne que dans le processus driver Spark et ne recharge pas le code dans les processus exécuteur Spark. Parce qu'il ne fonctionne que sur le nœud driver 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 UDF).

Dans Databricks Runtime 16,0 et versions ultérieures, l'extension autoreload de Databricks ajoute les fonctionnalités suivantes :

  • Prise en charge du rechargement ciblé des modules pour les modifications internes aux fonctions. Le rechargement de la partie modifiée d'un module, chaque fois que possible, garantit qu'il n'y a qu'une seule instance visible de chaque objet, ce qui est plus sûr et plus fiable.
  • Lorsque vous importez un module Python à partir d'un fichier de workspace, Databricks suggère automatiquement d'utiliser autoreload si le module a été modifié depuis sa dernière importation.

Pour en savoir plus sur l'extension autoreload, consultez la documentation IPython autoreload.

Refactoriser le code

Une bonne pratique pour le développement de code consiste à modulariser le code afin qu'il puisse être facilement réutilisé. Vous pouvez créer des fichiers Python personnalisés avec les fichiers de workspace et rendre le code de ces fichiers disponible pour un notebook à l'aide de l'instruction import.

Pour refactoriser le code du Notebook dans des fichiers réutilisables :

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

Migrer depuis les commandes %run

Si vous utilisez les commandes %run pour rendre les 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, envisagez d'inclure ces modules personnalisés en tant que fichiers de workspace. De cette façon, vous pouvez maintenir vos Notebooks et autres modules de code synchronisés, garantissant que votre Notebook utilise toujours la version correcte.

%run les commandes vous permettent d'inclure un notebook dans un autre et sont souvent utilisées pour rendre le code Python ou R de support disponible pour un notebook. Dans cet exemple, un Notebook nommé power.py inclut le code ci-dessous.

Python
# 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 :

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

En utilisant les fichiers du Workspace, vous pouvez importer directement le module qui contient le code Python et exécuter la fonction.

Python
from power import n_to_mth
n_to_mth(3, 4)

Refactoriser les fichiers Python .whl en bibliothèques relatives

Vous pouvez installer des fichiers .whl personnalisés sur un cluster, puis les importer dans un Notebook associé à ce cluster. Cependant, ce processus pourrait être fastidieux et source d'erreurs pour le code fréquemment mis à jour. Les fichiers Workspace vous permettent de conserver ces fichiers Python dans le même répertoire que les Notebooks qui utilisent le code, garantissant ainsi que votre Notebook utilise toujours la bonne version.

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

Utilisez le terminal web Databricks pour les tests.

Vous pouvez utiliser le terminal web Databricks pour tester les modifications apportées à votre code Python ou R sans utiliser de notebook pour importer et exécuter le fichier.

  1. Ouvrez le 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.