Dela via


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

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.