Aller au contenu principal

Interagir par programme avec les fichiers Workspace

Vous pouvez interagir par programmation avec les fichiers du workspace stockés dans Databricks. Ceci permet des tâches telles que :

  • Stocker de petits fichiers de données avec les Notebooks et le code.
  • Écriture de fichiers Logs dans des répertoires synchronisés avec Git.
  • Importation de modules à l'aide de chemins relatifs.
  • Création ou modification d'un fichier de spécification d'environnement.
  • Écriture de la sortie des notebooks.
  • Écriture des résultats à partir de l'exécution de bibliothèques telles que TensorBoard.

Vous pouvez, de façon programmatique, créer, modifier, renommer et supprimer des fichiers du Workspace dans Databricks Runtime 11.3 LTS et versions ultérieures. Cette fonctionnalité est prise en charge pour les Notebooks dans Databricks Runtime 16.2 et versions ultérieures, et les environnements Serverless 2 et supérieurs.

remarque

Pour désactiver l'écriture dans les fichiers du Workspace, définissez la variable d'environnement du cluster WSFS_ENABLE_WRITE_SUPPORT=false. Pour plus d'informations, consultez Variables d'environnement.

remarque

Dans Databricks Runtime 14.0 et ses versions ultérieures, le répertoire de travail actuel (CWD) default 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 aux versions antérieures. Voir What is the default current working directory?.

Sur le compute serverless, le répertoire de travail n’est pas garanti, veillez donc à utiliser des chemins absolus pour référencer les fichiers. Voir Limites du compute serverless.

Lire les emplacements des fichiers​

Utilisez des commandes Shell pour lire l'emplacement des fichiers, par exemple, dans un référentiel ou dans le système de fichiers local.

Pour déterminer l'emplacement des fichiers, saisissez les informations suivantes :

Bash
%sh ls
  • Les fichiers ne sont pas dans un repository : la commande renvoie le système de fichiers /databricks/driver.
  • Les fichiers se trouvent dans un référentiel : La commande renvoie un référentiel virtualisé tel que /Workspace/Repos/name@domain.com/public_repo_2/repos_file_system.

Lisez les fichiers du Workspace.​

Vous pouvez lire par programmation de petits fichiers de données tels que les fichiers .csv ou .json à partir du code de vos Notebooks. L'exemple suivant utilise Pandas pour interroger les fichiers stockés dans un répertoire /data par rapport à la racine du dépôt de projet :

Python
import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df

Vous pouvez utiliser Spark pour lire les fichiers de données. Vous devez fournir à Spark le chemin d'accès complet.

  • Les fichiers du Workspace dans les dossiers Git utilisent le chemin file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file.
  • Les fichiers Workspace de votre répertoire personnel utilisent le chemin : file:/Workspace/Users/<user-folder>/path/to/file.

Vous pouvez copier le chemin d'accès absolu ou relatif à un fichier à partir du menu déroulant à côté du fichier :

menu déroulant Fichier

L'exemple ci-dessous montre l'utilisation de {os.getcwd()} pour obtenir le chemin complet.

Python
import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")
remarque

Dans les Workspaces où la racine et les montages DBFS sont désactivés, vous pouvez également utiliser dbfs:/Workspace pour accéder aux fichiers du Workspace avec les utilitaires Databricks. Ceci nécessite Databricks Runtime 13.3 LTS ou une version ultérieure. Consultez Désactiver l'accès à la racine et aux montages DBFS dans votre Workspace Databricks existant.

Pour en savoir plus sur les fichiers sur Databricks, consultez Travailler avec des fichiers sur Databricks.

Créer, mettre à jour et supprimer par programme des fichiers et répertoires​

Vous pouvez manipuler par programme les fichiers de Workspace dans Databricks, comme vous le feriez avec des fichiers dans n'importe quel système de fichiers standard.

remarque

Dans Databricks Runtime 16.2 et versions supérieures, et l'environnement Serverless 2 et versions supérieures, toutes les interactions programmatiques avec les fichiers sont également disponibles pour les Notebooks. Pour plus d'informations sur la conversion d'un fichier en Notebook, voir Convertir un fichier en Notebook.

remarque

Le répertoire parent d’un fichier doit déjà exister avant que vous n’y écriviez. Databricks met en mémoire tampon les écritures de fichiers et les vide de manière asynchrone dans le workspace. Par conséquent, l’écriture vers un chemin dont le répertoire parent est manquant échoue avec AsyncFlushFailedException après l’appel d’écriture plutôt qu’au moment où vous l’effectuez. Créez d’abord le répertoire parent, comme indiqué dans l’exemple suivant.

Les exemples suivants utilisent des packages et fonctionnalités Python standard pour créer et manipuler des fichiers et des répertoires.

Python
import os

# Create a new directory

os.mkdir('dir1')

# Create a new file and write to it

with open('dir1/new_file.txt', "w") as f:
f.write("new content")

# Append to a file

with open('dir1/new_file.txt', "a") as f:
f.write(" continued")

# Delete a file

os.remove('dir1/new_file.txt')

# Delete a directory

os.rmdir('dir1')
Python
import shutil

# Copy a dashboard

shutil.copy("my-dashboard.lvdash.json", "my-dashboard-copy.lvdash.json")

# Move a query to a shared folder

shutil.move("test-query.dbquery","shared-queries/")


Résoudre les noms d’asset en double​

Dans certains cas, un dossier de workspace peut déjà contenir des ressources portant le même nom. Par exemple, deux query SQL peuvent toutes deux être nommées My query. Cela peut se produire lorsque des actifs ont été créés avant que l'unicité des noms ne soit entièrement appliquée.

Lorsqu’un dossier contient des noms d’asset en double, l’accès au dossier basé sur les fichiers échoue, bien que les assets eux-mêmes restent inchangés. Vous risquez de voir des erreurs telles que :

  • Name not unique on network (OSError: [Errno 76]) — par exemple, lorsque vous exécutez ls ou d'autres commandes dans le terminal web, ou que vous listez le dossier à partir d'un notebook.
  • File name conflict ou RESOURCE_CONFLICT: Duplicate entities detected in the directory— par exemple, lors des opérations sur les dossiers Git.
remarque

Les noms en double n’affectent pas les assets eux-mêmes. Vous pouvez toujours ouvrir et utiliser chaque asset depuis le navigateur du Workspace. Seules les commandes qui atteignent le dossier via le système de fichiers — telles que le terminal web, WSFS ou les opérations Git — sont concernées.

Pour trouver l'asset dont les noms sont en double, exécutez le Notebook suivant. Il analyse un dossier et ses sous-dossiers et liste les asset qui partagent le même nom. Le notebook est en lecture seule et ne renomme ni ne supprime aucun asset.

Rechercher les asset de Workspace en double

Pour résoudre les doublons de noms à l'aide de l'interface utilisateur du workspace :

  1. Dans le navigateur du workspace, ouvrez chaque dossier identifié par le notebook.
  2. Renommez ou supprimez les asset en double jusqu'à ce que chaque asset du dossier ait un nom unique.

Une fois que tous les noms d’asset du dossier sont uniques, l’accès basé sur les fichiers fonctionne à nouveau.