Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 standard aktuella arbetskatalogen (CWD) för lokal kod den katalog som innehåller den notebook eller det skript 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?.
I serverlösa beräkningsmiljöer kan arbetskatalogen inte garanteras, så använd absoluta sökvägar för att ange filer. Se Begränsningar för serverlös beräkning.
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")
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.
Notis
Föräldrakatalogen för en fil måste redan finnas innan du skriver till den. Azure Databricks buffrar filskrivningar och skriver dem till arbetsytan asynkront, så att skrivning till en sökväg där den överordnade katalogen saknas misslyckas med AsyncFlushFailedException efter skrivanropet snarare än när du gör anropet. Skapa föräldrakatalogen först, som visas i följande exempel.
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/")
Åtgärda duplicerade resursnamn
I vissa fall kan en arbetsytmapp redan innehålla resurser med samma namn. Till exempel kan två SQL-frågor båda heta My query. Detta kan inträffa när tillgångar skapades innan kravet på att namn måste vara unika tillämpades fullt ut.
När en mapp innehåller dubbletter av resursnamn misslyckas filbaserad åtkomst till mappen, även om resurserna själva förblir opåverkade. Du kan få se fel som:
-
Name not unique on network(OSError: [Errno 76])—till exempel när du körlseller andra kommandon i webbterminalen, eller listar mappen från en notebook. -
File name conflictellerRESOURCE_CONFLICT: Duplicate entities detected in the directory—till exempel under Git-mappoperationer.
Notis
Dubblettnamn påverkar inte resurserna själva. Du kan fortfarande öppna och använda varje asset från arbetsytswebbläsaren. Endast kommandon som når mappen via filsystemet – såsom webbterminalen, WSFS eller Git-mappoperationer – påverkas.
För att hitta tillgångar med dubblettnamn, kör följande notebook. Den skannar en mapp och dess undermappar och listar resurser som har samma namn. Notebooken är skrivskyddad och byter inte namn på eller raderar några resurser.
Hitta dubbla resurser i arbetsytan
För att åtgärda namnkonflikter med hjälp av arbetsytans gränssnitt:
- I arbetsytans webbläsare, öppna varje mapp som identifieras av anteckningsboken.
- Byt namn på eller ta bort dubbletter tills varje resurs i mappen har ett unikt namn.
Efter att alla tillgångsnamn i mappen är unika fungerar filbaserad åtkomst igen.