Interagera programmatiskt med arbetsytefiler
Du kan interagera med arbetsytefiler som lagras i Azure Databricks programmatiskt. Detta aktiverar uppgifter som:
- Lagra små datafiler tillsammans med notebook-filer och kod.
- Skriva loggfiler till kataloger som synkroniserats med Git.
- Importera moduler med hjälp av relativa sökvägar.
- Skapa eller ändra en miljöspecifikationsfil.
- Skriva utdata från anteckningsböcker.
- Skriva utdata från körning av bibliotek, till exempel Tensorboard.
Du kan programmatiskt skapa, redigera, byta namn på och ta bort arbetsytefiler i Databricks Runtime 11.3 LTS och senare. Den här funktionen stöds för notebook-filer i Databricks Runtime 16.2 och senare samt serverlös miljö 2 och senare.
Notis
Om du vill inaktivera skrivning till arbetsytefiler ställer du in klustermiljövariabeln WSFS_ENABLE_WRITE_SUPPORT=false
. Mer information finns i Miljövariabler.
Notis
I Databricks Runtime 14.0 och senare är den aktuella standardkatalogen (CWD) för kod som körs lokalt katalogen som innehåller anteckningsboken eller skriptet som körs. Det här är en ändring i beteendet från Databricks Runtime 13.3 LTS och nedan. Se Vad är standard för nuvarande arbetskatalog?.
Läs filernas platser
Använd shell-kommandon för att läsa platserna för filer, till exempel i en lagringsplats eller i det lokala filsystemet.
Ange följande för att fastställa platsen för filer:
%sh ls
-
Filer finns inte på en lagringsplats: Kommandot returnerar filsystemet
/databricks/driver
. -
Filer finns på en lagringsplats: Kommandot returnerar en virtualiserad lagringsplats, till exempel
/Workspace/Repos/name@domain.com/public_repo_2/repos_file_system
.
Läsa dataarbetsutrymmefiler
Du kan programmässigt läsa små datafiler som .csv
eller .json
från kod i dina anteckningsböcker. I följande exempel används Pandas för att fråga efter filer som lagras i en /data
katalog i förhållande till roten på projektlagringsplatsen:
import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df
Du kan använda Spark för att läsa datafiler. Du måste ge Spark den fullständigt kvalificerade sökvägen.
- Arbetsytefiler i Git-mappar använder sökvägen
file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file
. - Arbetsytefiler i din personliga katalog använder sökvägen:
file:/Workspace/Users/<user-folder>/path/to/file
.
Du kan kopiera den absoluta eller relativa sökvägen till en fil från den nedrullningsbara menyn bredvid filen:
Exemplet nedan visar användningen av {os.getcwd()}
för att hämta den fullständiga sökvägen.
import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")
Mer information om filer i Azure Databricks finns i Arbeta med filer på Azure Databricks.
Skapa, uppdatera och ta bort filer och kataloger programmatiskt
I Databricks Runtime 11.3 LTS och senare kan du direkt ändra arbetsytefiler i Azure Databricks. Notebook-filer behandlas som arbetsytefiler i Databricks Runtime 16.2 och senare och serverlös miljö 2 och senare. I följande exempel används python-standardpaket och -funktioner för att skapa och manipulera filer och kataloger.
# 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')
anteckningsböcker som arbetsfiler
Notis
Den här funktionen är tillgänglig i Databricks Runtime 16.2 och senare och i serverlös miljö 2 och senare.
Alla programmatiska interaktioner med filer är också tillgängliga för anteckningsböcker. En tillgång på arbetsytan identifieras som en notebook-fil om:
- den har ett
.ipynb
tillägg, - eller innehåller strängen
Databricks notebook source
i en kommentar på den första raden och har något av följande tillägg:.py
,.r
,.scala
,.sql
.
Varje skrivning eller namnbyte av en anteckningsbok eller fil som ändrar dessa villkor, ändrar även typen av anteckningsbok eller fil. Om du till exempel har en fil myfile.txt
som har # Databricks notebook source
som den första raden, så om du byter namn på filen till myfile.py
försätts den i en notebook-fil.
Information om hur du konverterar en fil till en notebook finns i Importera en fil och konvertera den till en notebook.