Quel est le répertoire de travail actuel default ?
Cet article décrit le fonctionnement du répertoire de travail actuel par default (CWD) pour l'exécution des Notebooks et des fichiers.
Utilisez Databricks Runtime 14.0+ et les configurations de Workspace default pour une plus grande cohérence du comportement (CWD) dans l'ensemble du Workspace.
Il existe deux comportements CWD par default pour le code exécuté localement dans les Notebooks et les fichiers:
- CWD renvoie le répertoire contenant le Notebook ou le script en cours d'exécution.
- CWD renvoie un répertoire représentant le volume de stockage éphémère attaché au Driver.
Ce comportement de CWD affecte tout le code, y compris %sh et le code Python ou R qui n'utilise pas Apache Spark. Le comportement est déterminé par le langage de code, la version de Databricks Runtime, le chemin du Workspace et la configuration de l'administrateur du Workspace.
Pour le code Scala, le CWD est le stockage éphémère attaché au Driver .
Pour le code dans toutes les autres langues :
- 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 . Ceci est vrai que le code se trouve dans
/Workspace/Repos. - Pour les Notebooks exécutant Databricks Runtime 13.3 LTS et versions antérieures, le répertoire de travail dépend de si le code se trouve dans
/Workspace/Repos: - Pour le code exécuté dans un chemin en dehors de
/Workspace/Repos, le répertoire de travail actuel est le volume de stockage éphémère attaché au Driver. - Pour le code exécuté dans un chemin d'accès dans
/Workspace/Repos, le répertoire de travail actuel (CWD) dépend de votre paramètre de configuration d'administrateur et de la version de Databricks Runtime du cluster :- Pour les workspaces avec
enableWorkspaceFilesystemdéfini surdbr8.4+outrue, sur les versions 8.4 et ultérieures de Databricks Runtime, le CWD est le répertoire contenant le notebook ou le script en cours d’exécution. Sur les versions de Databricks Runtime inférieures à 8.4, il s'agit du volume de stockage éphémère attaché au Driver. - Pour les Workspace dont
enableWorkspaceFilesystemest défini surdbr11.0+, sur les versions de Databricks Runtime 11.0 et supérieures, le CWD est le répertoire contenant le Notebook ou le script en cours d'exécution. Sur les versions de Databricks Runtime antérieures à 11.0, il s'agit du volume de stockage éphémère attaché au Driver. - Pour les Workspaces où
enableWorkspaceFilesystemest défini surfalse, le CWD est le volume de stockage éphémère attaché au Driver.
- Pour les workspaces avec
Obtenez le CWD dans votre code
Pour obtenir le CWD du Workspace de votre notebook de pipeline, appelez os.getcwd(). Vous devez importer le module os (le module d’interaction du système de fichiers Python default) 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 pipeline. Vous ne pouvez définir le répertoire de travail actuel que lorsque vous exécutez un notebook à partir de votre workspace avec WSFS activé.
Quel est l'impact sur les workloads ?
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 versions antérieures, pour le code exécuté dans un chemin en dehors de
/Workspace/Repos, de nombreux extraits de code stockent des données dans un emplacement par default sur un volume de stockage éphémère qui est supprimé définitivement lorsque le cluster est arrêté. - Dans Databricks Runtime 14.0 et versions ultérieures, le comportement par default pour ces Opérations crée des fichiers de workspace stockés à côté du Notebook en cours d'exécution qui persistent jusqu'à leur suppression explicite.
Pour des notes sur les différences de performance et les autres limitations inhérentes aux fichiers Workspace, consultez Utiliser les fichiers Workspace.
Rétablir le comportement hérité
Vous pouvez modifier le répertoire de travail actuel pour tout notebook à l'aide de la méthode Python os.chdir(). Si vous souhaitez que chaque Notebook utilise un CWD sur les volumes de stockage éphémères attachés au Driver, 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")