Interagir par programmation avec les fichiers d’espace de travail
Vous pouvez interagir avec les fichiers d’espace de travail stockés dans Azure Databricks par programmation. Cela active les tâches telles que :
- Stockage de petits fichiers de données en même temps que des blocs-notes et du code.
- Écriture de fichiers journaux 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 à partir de notebooks.
- Écriture de la sortie à partir de l’exécution de bibliothèques telles que Tensorboard.
Vous pouvez créer, modifier, renommer et supprimer des fichiers d’espace de travail par programmation 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, ainsi que pour l’environnement serverless version 2 et ultérieures.
Remarque
Pour désactiver l’écriture dans des fichiers d’espace de travail, définissez la variable d’environnement de cluster WSFS_ENABLE_WRITE_SUPPORT=false
. Pour en savoir plus, voir Variables d’environnement.
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 ci-dessous. Consultez Qu’est-ce que le répertoire de travail actuel par défaut ?.
Lire les emplacements des fichiers
Utilisez des commandes shell pour lire les emplacements des fichiers, par exemple, dans un dépôt ou dans le système de fichiers local.
Pour déterminer l’emplacement des fichiers, entrez les éléments suivants :
%sh ls
- Fichiers ne sont pas dans un dépôt : La commande retourne le système de fichiers
/databricks/driver
. - Fichiers se trouvent dans un dépôt : La commande retourne un référentiel virtualisé tel que
/Workspace/Repos/name@domain.com/public_repo_2/repos_file_system
.
Lire les fichiers de l’espace de travail de données
Vous pouvez lire automatiquement de petits fichiers de données tels que les fichiers .csv
ou .json
à partir du code dans vos cahiers. L’exemple suivant utilise Pandas pour interroger des fichiers stockés dans un répertoire /data
par rapport à la racine du dépôt de projet :
import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df
Vous pouvez utiliser Spark pour lire des fichiers de données. Vous devez fournir à Spark le chemin d’accès complet.
- Les fichiers d’espace de travail dans les dossiers Git utilisent le chemin d’accès
file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file
. - Les fichiers d’espace de travail dans votre répertoire personnel utilisent le chemin d’accès :
file:/Workspace/Users/<user-folder>/path/to/file
.
Vous pouvez copier le chemin absolu ou relatif vers un fichier à partir du menu déroulant en regard du fichier :
menu déroulant fichier
L’exemple ci-dessous montre l’utilisation de {os.getcwd()}
pour obtenir le chemin complet.
import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")
Pour en savoir plus sur les fichiers sur Azure Databricks, consultez Utiliser des fichiers sur Azure Databricks.
Créer, mettre à jour et supprimer des fichiers et des répertoires par programmation
Dans Databricks Runtime 11.3 LTS et versions ultérieures, vous pouvez manipuler directement des fichiers d’espace de travail dans Azure Databricks. Les notebooks sont traités comme des fichiers d’espace de travail dans Databricks Runtime 16.2 et versions ultérieures, ainsi que dans un environnement sans serveur 2 et versions ultérieures. Les exemples suivants utilisent des packages et fonctionnalités Python standard pour créer et manipuler des fichiers et des répertoires.
# 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')
Blocs-notes en tant que fichiers d’espace de travail
Dans Databricks Runtime 16.2 et versions ultérieures, et l’environnement serverless 2 et versions ultérieures, toutes les interactions programmatiques avec les fichiers sont également disponibles pour les notebooks. Une ressource dans l’espace de travail est identifiée comme un bloc-notes s’il a une extension .ipynb
, ou contient la chaîne Databricks notebook source
dans un commentaire dans la première ligne et a l’une des extensions suivantes : .py
, .r
, .scala
, .sql
. Toute écriture ou renommage d’un bloc-notes ou d’un fichier qui modifie ces conditions change également le type du bloc-notes ou du fichier. Par exemple, si vous avez un fichier myfile.txt
qui a # Databricks notebook source
comme première ligne, renommer ce fichier en myfile.py
le transforme en bloc-notes.