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.
notebookutils.fs tillhandahåller verktyg för att arbeta med olika filsystem, inklusive Azure Data Lake Storage (ADLS) Gen2 och Azure Blob Storage. Se till att du konfigurerar åtkomsten till Azure Data Lake Storage Gen2 och Azure Blob Storage på rätt sätt.
Kör följande kommandon för en översikt över tillgängliga metoder:
notebookutils.fs.help()
I följande tabell visas de tillgängliga filsystemmetoderna:
| Metod | Signature | Beskrivning |
|---|---|---|
ls |
ls(path: String): Array |
Visar en lista över innehållet i en katalog. |
mkdirs |
mkdirs(path: String): Boolean |
Skapar den angivna katalogen om den inte finns och skapar även nödvändiga överordnade kataloger. |
cp |
cp(src: String, dest: String, recurse: Boolean = false): Boolean |
Kopierar en fil eller katalog, eventuellt över filsystem. |
fastcp |
fastcp(src: String, dest: String, recurse: Boolean = true, extraConfigs: Map = None): Boolean |
Kopierar en fil eller katalog via azcopy för bättre prestanda med stora datavolymer. |
mv |
mv(src: String, dest: String, create_path: Boolean, overwrite: Boolean = false): Boolean |
Flyttar en fil eller katalog, eventuellt över filsystem. |
put |
put(file: String, content: String, overwrite: Boolean = false): Boolean |
Skriver ut den angivna strängen till en fil, kodad i UTF-8. |
head |
head(file: String, max_bytes: int = 1024 * 100): String |
Returnerar upp till de första max_bytes byteen i den angivna filen som en sträng kodad i UTF-8. |
append |
append(file: String, content: String, createFileIfNotExists: Boolean = false): Boolean |
Lägger till innehållet i en fil. |
rm |
rm(path: String, recurse: Boolean = false): Boolean |
Tar bort en fil eller katalog. |
exists |
exists(path: String): Boolean |
Kontrollerar om det finns en fil eller katalog. |
getProperties |
getProperties(path: String): Map |
Hämtar egenskaperna för den angivna sökvägen. Endast tillgängligt i Python-notebook-filer (stöds inte i PySpark, Scala eller R). |
Anmärkning
Alla filsystemmetoder är tillgängliga i Python-, PySpark-, Scala- och R-notebooks, om inte annat anges. Scala använder camelCase-parameternamn (till exempel createPath i stället för create_pathi maxBytes stället för max_bytes).
Information om hur du utför monterings- och avmonteringsåtgärder finns i Montera och avmontera filer.
Anmärkning
Tänk på följande begränsningar och överväganden när du arbetar med notebookutils.fs:
-
Sökvägsbeteendet varierar beroende på notebook-typ: I Spark-notebooks relaterar relativa sökvägar till standardsökvägen Lakehouse ABFSS. I Python-notebooks matchas relativa sökvägar till det lokala filsystemets arbetskatalog (
/home/trusted-service-user/work). -
Samtidiga skrivbegränsningar:
notebookutils.fs.append()ochnotebookutils.fs.put()stöder inte samtidiga skrivningar till samma fil på grund av brist på atomicitetsgarantier. -
Tilläggsfördröjning i loop: När du använder
notebookutils.fs.append()i loopar ska du lägga till 0,5–1 sekunds paus mellan skrivningarna för att säkerställa dataintegritet. -
OneLake-genvägsbegränsningar: För genvägar av typen S3/GCS använder du monterade sökvägar i stället för ABFS-sökvägar för
cp()ochfastcp()åtgärder. -
Begränsningar mellan regioner:
fastcp()stöder inte kopiering av filer i OneLake mellan regioner. Användcp()i stället. - Körningsversion: NotebookUtils är utformat för att fungera med Spark 3.4 (Runtime v1.2) och senare.
-
cp()beteende i Python-notebook-filer: I Python-notebook-filercp()använder internt samma azcopy-baserade mekanism somfastcp(), så att båda metoderna beter sig identiskt.
NotebookUtils fungerar med filsystemet på samma sätt som Spark-API:er. Ta till exempel användningen av notebookutils.fs.mkdirs() och Lakehouse.
| Förbrukning | Relativ sökväg från HDFS:s rot | Absolut sökväg för ABFS-filsystem | Absolut sökväg för det lokala filsystemet i drivrutinsnoden |
|---|---|---|---|
| Lakehouse i icke-standardläge | Stöds ej | notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") |
notebookutils.fs.mkdirs("file:/<new_dir>") |
| Förvald Lakehouse | Katalog under "Filer" eller "Tabeller": notebookutils.fs.mkdirs("Files/<new_dir>") |
notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") |
notebookutils.fs.mkdirs("file:/<new_dir>") |
För standard-Lakehouse monteras filsökvägar i din notebook med en standardtidsgräns för filcache på 120 sekunder. Det innebär att filer cachelagras i anteckningsbokens lokala temporära mapp i 120 sekunder, även om de tas bort från Lakehouse. Om du vill ändra tidsgränsregeln kan du avmontera standardsökvägarna för Lakehouse-filen och sedan montera om dem med ett annat
fileCacheTimeout-värde.För Lakehouse-konfigurationer som inte är standard kan du ange lämplig
fileCacheTimeoutparameter vid montering av Lakehouse-sökvägarna. Om tidsgränsen anges till 0 ser du till att den senaste filen hämtas från Lakehouse-servern.
Lista filer
Om du vill visa en lista över innehållet i en katalog använder du notebookutils.fs.ls('Your directory path'). Som exempel:
notebookutils.fs.ls("Files/tmp") # Relative path works with different base paths depending on notebook type
notebookutils.fs.ls("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>") # Absolute path using ABFS file system
notebookutils.fs.ls("file:/tmp") # Full path of the local file system of driver node
API:t notebookutils.fs.ls() fungerar annorlunda vid användning av en relativ sökväg, beroende på notebooktypen.
I en Spark notebook: Den relativa sökvägen är relativ till Lakehouse ABFSS:s standardsökväg. Till exempel pekar
notebookutils.fs.ls("Files")på katalogenFilesi Standard Lakehouse.Som exempel:
notebookutils.fs.ls("Files/sample_datasets/public_holidays.parquet")I en Python-anteckningsbok: Den relativa sökvägen är relativ till det lokala filsystemets arbetskatalog, som som standard är
/home/trusted-service-user/work. Därför bör du använda den fullständiga sökvägen i stället för en relativ sökvägnotebookutils.fs.ls("/lakehouse/default/Files")för att få åtkomst till katalogenFilesi standardkatalogen i Lakehouse.Som exempel:
notebookutils.fs.ls("/lakehouse/default/Files/sample_datasets/public_holidays.parquet")
Visa filegenskaper
Använd notebookutils.fs.ls() för att granska filegenskaper som filnamn, filsökväg, filstorlek och om ett objekt är en fil eller katalog.
files = notebookutils.fs.ls('Your directory path')
for file in files:
print(file.name, file.isDir, file.isFile, file.path, file.size)
Använd f-strängar om du vill ha mer läsbara utdata:
files = notebookutils.fs.ls("Files/data")
for file in files:
print(f"Name: {file.name}, Size: {file.size}, IsDir: {file.isDir}, Path: {file.path}")
Skapa ny katalog
Skapa en katalog om den inte finns, inklusive eventuella nödvändiga överordnade kataloger.
notebookutils.fs.mkdirs('new directory name')
notebookutils.fs.mkdirs("Files/<new_dir>") # Works with the default Lakehouse files using relative path
notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") # Based on ABFS file system
notebookutils.fs.mkdirs("file:/<new_dir>") # Based on local file system of driver node
Kopiera fil
Kopiera en fil eller katalog mellan filsystem. Ange recurse=True att kopiera kataloger rekursivt.
notebookutils.fs.cp('source file or directory', 'destination file or directory', recurse=True)
Anmärkning
Anteckning om Python-notebook-fil: I Python-notebook-filer cp() använder internt samma azcopy-baserade mekanism som fastcp(), vilket ger effektiv prestanda för båda metoderna.
På grund av begränsningarna i OneLake-genvägen rekommenderar vi att du använder en monterad sökväg i stället för en abfss-sökväg när du behöver använda notebookutils.fs.cp() för att kopiera data från genväg av S3/GCS-typ.
Tips/Råd
Kontrollera alltid det booleska returvärdet för att kontrollera om åtgärden lyckades. Använd notebookutils.fs.exists() för att verifiera källsökvägen innan du startar en kopieringsåtgärd.
I följande exempel visas en kopia mellan lagringsenheter från Standard Lakehouse till ett ADLS Gen2-konto:
notebookutils.fs.cp(
"Files/local_data",
"abfss://<container>@<account>.dfs.core.windows.net/remote_data",
recurse=True
)
Effektiv kopiering av fil
Använd fastcp för effektivare kopieringsåtgärder, särskilt med stora datavolymer. Som standard är parametern recurseTrue.
notebookutils.fs.fastcp('source file or directory', 'destination file or directory', recurse=True)
Tips/Råd
Använd fastcp() i stället cp() för för stora dataöverföringar. Metoden fastcp använder azcopy i bakgrunden, vilket ger betydligt bättre genomströmning för stora filoperationer. I Python-notebook-filer använder båda cp() och fastcp() samma underliggande mekanism.
Tänk på följande:
-
notebookutils.fs.fastcp()stöder inte kopiering av filer i OneLake mellan regioner. I det här fallet kan du användanotebookutils.fs.cp()i stället. - På grund av begränsningarna i OneLake-genvägen rekommenderar vi att du använder en monterad sökväg i stället för en abfss-sökväg när du behöver använda
notebookutils.fs.fastcp()för att kopiera data från genväg av S3/GCS-typ.
Förhandsgranska filinnehåll
Återgå till de första max_bytes byteen i en fil som en UTF-8-sträng.
notebookutils.fs.head('file path', max_bytes)
Tips/Råd
För stora filer använder du head() med ett lämpligt max_bytes värde för att undvika minnesproblem. Standardvärdet är 100 KB (1024 * 100).
Följande exempel läser de första 1 000 byteen av en fil:
content = notebookutils.fs.head("Files/data/sample.txt", 1000)
print(content)
Anmärkning
Standardvärdet för max_bytes skiljer sig åt mellan olika språk: Python- och Scala-notebook-filer använder 102400 (100 KB), medan R-notebook-filer använder 65535 (64 KB). I Scala heter maxBytesden här parametern .
Flytta fil
Flytta en fil eller katalog mellan filsystem.
notebookutils.fs.mv('source file or directory', 'destination directory', create_path=True, overwrite=True)
Viktigt!
Standardinställningen för create_path-parametern varierar beroende på runtime:
-
Spark-notebooks (PySpark, Scala, R): standardvärdet är
False(falsei Scala,FALSEi R). Den överordnade katalogen måste vara tillgänglig innan förflyttningen. -
Python-notebooks: standardvärdet är
True. Den överordnade katalogen skapas automatiskt om den inte finns.
För att säkerställa konsekvent beteende mellan körningar anger du uttryckligen parametern create_path i koden. I Scala heter createPathden här parametern .
Använd namngivna parametrar om du vill ha tydligare kod:
notebookutils.fs.mv("Files/source.csv", "Files/new_folder/dest.csv", create_path=True, overwrite=True)
Skriv fil
Skriv en UTF-8-sträng till en fil.
notebookutils.fs.put("file path", "content to write", True) # Set the last parameter as True to overwrite the file if it already exists
Lägga till innehåll i en fil
Lägg till en UTF-8-sträng i en fil.
notebookutils.fs.append("file path", "content to append", True) # Set the last parameter as True to create the file if it doesn't exist
Viktigt!
notebookutils.fs.append() och notebookutils.fs.put() stöder inte samtidig skrivning till samma fil på grund av brist på atomicitetsgarantier.
När du använder API:et notebookutils.fs.append i en for loop för att skriva till samma fil lägger du till en sleep instruktion på cirka 0,5 till 1 sekund mellan de återkommande skrivningar. Den här rekommendationen beror på att notebookutils.fs.append API:ets interna flush åtgärd är asynkron, så en kort fördröjning bidrar till att säkerställa dataintegriteten.
import time
for i in range(100):
notebookutils.fs.append("Files/output/data.txt", f"Line {i}\n", True)
time.sleep(0.5) # Prevent data integrity issues
Ta bort fil eller katalog
Ta bort en fil eller katalog. Ange recurse=True för att ta bort kataloger rekursivt.
notebookutils.fs.rm('file path', recurse=True)
Kontrollera om det finns en fil eller katalog
Kontrollera om det finns en fil eller katalog på den angivna sökvägen. Den returnerar True om sökvägen finns. Annars returneras False.
notebookutils.fs.exists("Files/data/input.csv")
Tips/Råd
Använd exists() innan du utför filåtgärder för att förhindra fel. Kontrollera till exempel att det finns en källfil innan du försöker kopiera eller flytta den.
if notebookutils.fs.exists("Files/data/input.csv"):
notebookutils.fs.cp("Files/data/input.csv", "Files/backup/input.csv")
print("File copied successfully.")
else:
print("Source file not found.")
Hämta filegenskaper
Hämta egenskaper för en sökväg som en karta över namn/värde-par. Det stöds bara för Azure Blob Storage-sökvägar.
Anmärkning
Metoden getProperties är endast tillgänglig i Python-notebook-filer. Det stöds inte i Spark Notebooks (PySpark, Scala eller R).
Parameters:
| Parameter | Type | Obligatoriskt | Beskrivning |
|---|---|---|---|
path |
String | Ja | ABFS-sökväg till filen eller katalogen. |
Returnerar: En ordbok (karta) som innehåller metadataegenskaper som filstorlek, skapelsetid, senast ändrade tid och innehållstyp.
properties = notebookutils.fs.getProperties("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>")
print(properties)