Quel est le répertoire de travail actuel par défaut ?
Cet article décrit le fonctionnement du répertoire de travail en cours (CWD) par défaut pour l’exécution des notebooks et des fichiers.
Remarque
Utilisez les configurations d’espace de travail Databricks Runtime 14.0+ et par défaut pour plus de cohérence dans le comportement (CWD) dans tout l’espace de travail.
Il existe deux comportements CWD par défaut pour le code exécuté localement dans notebooks et les fichiers :
- CWD retourne le répertoire contenant le notebook ou le script en cours d’exécution.
- CWD retourne un répertoire représentant le volume de stockage éphémère attaché au pilote.
Ce comportement CWD affecte tout le code, y compris %sh
et le code Python ou R qui n’utilisent pas Apache Spark. Le comportement est déterminé par le langage de code, la version de Databricks Runtime, le chemin d’accès de l’espace de travail et la configuration de l’administrateur de l’espace de travail.
Pour le code Scala, le CWD est le stockage éphémère attaché au pilote.
Pour le code dans tous les autres langages :
- Dans Databricks Runtime 14.0 et versions ultérieures, le CWD est le répertoire contenant le notebook ou le script en cours d’exécution. Cela est vrai, que le code se trouve dans
/Workspace/Repos
. - Pour les notebooks exécutant Databricks Runtime 13.3 LTS et ci-dessous, le CWD dépend du fait que le code se trouve dans
/Workspace/Repos
: - Pour le code exécuté dans un chemin d’accès en dehors de
/Workspace/Repos
, le CWD est le volume de stockage éphémère attaché au pilote - Pour le code exécuté dans un chemin d’accès dans
/Workspace/Repos
, le CWD dépend du paramètre de configuration de votre administrateur et de la version DBR du cluster :- Pour les espaces de travail dont la valeur
enableWorkspaceFilesystem
est définie surdbr8.4+
outrue
, dans les versions 8.4 et supérieures de DBR, le CWD est le répertoire contenant le notebook ou le script en cours d’exécution. Sur les versions DBR antérieures à la version 8.4, il s’agit du volume de stockage éphémère attaché au pilote - Pour les espaces de travail dont la valeur
enableWorkspaceFilesystem
est définie surdbr11.0+
, dans les versions 11.0 et supérieures de DBR, le CWD est le répertoire contenant le notebook ou le script en cours d’exécution. Sur les versions DBR inférieures à la version 11.0, il s’agit du volume de stockage éphémère attaché au pilote - Pour les espaces de travail dont la valeur
enableWorkspaceFilesystem
est définie surfalse
, le CWD est le volume de stockage éphémère attaché au pilote
- Pour les espaces de travail dont la valeur
Obtenir le CWD dans votre code
Pour obtenir le CWD de l’espace de travail pour votre bloc-notes de pipeline, appelez os.getcwd()
. Vous devez importer le os
module (le module d’interaction du système de fichiers Python par défaut) au début de votre notebook avec import os
. Par exemple :
import os
...
cwd = os.getcwd()
Vous pouvez également définir le CWD en appelant os.chdir('/path/to/dir')
au début de votre notebook de pipeline. Vous ne pouvez définir le CWD que lorsque vous exécutez un bloc-notes à partir de votre espace de travail avec WSFS activé.
Quel impact cela a-t-il sur les charges de travail ?
Les impacts les plus importants sur les charges de travail sont liés à la persistance et à l’emplacement des fichiers :
- Dans Databricks Runtime 13.3 LTS et moins, pour le code exécuté dans un chemin en dehors de
/Workspace/Repos
, de nombreux extraits de code stockent les données à un emplacement par défaut sur un volume de stockage éphémère qui est définitivement supprimé lorsque le cluster est terminé. - Dans Databricks Runtime 14,0 et versions ultérieures, le comportement par défaut de ces opérations crée des fichiers d’espace de travail stockés avec le bloc-notes en cours d’exécution qui persistent jusqu’à leur suppression explicite.
Pour obtenir des notes sur les différences de performances et d’autres limitations inhérentes aux fichiers d’espace de travail, consultez Travailler avec les fichiers de l’espace de travail.
Revenir au comportement hérité
Vous pouvez modifier le répertoire de travail actuel de n'importe quel notebook à l'aide de la méthode Python os.chdir()
. Si vous souhaitez vous assurer que chaque notebook utilise un CWD sur les volumes de stockage éphémères attachés au pilote, vous pouvez ajouter la commande suivante à la première cellule de chaque notebook et l'exécuter avant tout autre code :
import os
os.chdir("/tmp")