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:

rullgardinsmeny

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")

Notis

I arbetsytor där DBFS-rot och monteringar är inaktiverade kan du också använda dbfs:/Workspace för att komma åt arbetsytefiler med Databricks-verktyg. Detta kräver Databricks Runtime 13.3 LTS eller senare. Se Inaktivera åtkomst till DBFS-rot och -monteringar i din befintliga Azure Databricks-arbetsyta.

Mer information om filer i Azure Databricks finns i Arbeta med filer på Azure Databricks.

Skapa, uppdatera och ta bort filer och kataloger programmatiskt

Du kan programmatiskt manipulera arbetsytefiler i Azure Databricks, ungefär som du arbetar med filer i valfritt standardfilsystem.

Notis

I Databricks Runtime 16.2 och senare samt serverlös miljö 2 och senare är alla programmatiska interaktioner med filer också tillgängliga för notebooks. Information om hur du konverterar en fil till en notebook-fil finns i Konvertera en fil till en notebook-fil.

I följande exempel används python-standardpaket och -funktioner för att skapa och manipulera filer och kataloger.

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')
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/")