Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
notebookutils.fs tilbyr verktøy for arbeid med ulike filsystemer, inkludert Azure Data Lake Storage (ADLS) Gen2 og Azure Blob Storage. Kontroller at du konfigurerer tilgang til Azure Data Lake Storage Gen2 og Azure Blob Storage på riktig måte.
Kjør følgende kommandoer for en oversikt over de tilgjengelige metodene:
notebookutils.fs.help()
Tabellen nedenfor viser tilgjengelige filsystemmetoder:
| Metode | Signatur | Beskrivelse |
|---|---|---|
ls |
ls(path: String): Array |
Lister innholdet i en katalog. |
mkdirs |
mkdirs(path: String): Boolean |
Oppretter den gitte katalogen hvis den ikke eksisterer, og oppretter også nødvendige overordnede kataloger. |
cp |
cp(src: String, dest: String, recurse: Boolean = false): Boolean |
Kopierer en fil eller katalog, muligens på tvers av filsystemer. |
fastcp |
fastcp(src: String, dest: String, recurse: Boolean = true, extraConfigs: Map = None): Boolean |
Kopierer en fil eller katalog via azcopy for bedre ytelse med store datavolumer. |
mv |
mv(src: String, dest: String, create_path: Boolean, overwrite: Boolean = false): Boolean |
Flytter en fil eller mappe, muligens på tvers av filsystemer. |
put |
put(file: String, content: String, overwrite: Boolean = false): Boolean |
Skriver ut den gitte strengen til en fil, kodet i UTF-8. |
head |
head(file: String, max_bytes: int = 1024 * 100): String |
Returnerer opptil de første max_bytes bytene av den gitte filen som en streng kodet i UTF-8. |
append |
append(file: String, content: String, createFileIfNotExists: Boolean = false): Boolean |
Legg til innholdet i en fil. |
rm |
rm(path: String, recurse: Boolean = false): Boolean |
Fjerner en fil eller katalog. |
exists |
exists(path: String): Boolean |
Sjekker om en fil eller mappe eksisterer. |
getProperties |
getProperties(path: String): Map |
Får egenskapene til den gitte stien. Tilgjengelig kun i Python-notatbøker (ikke støttet i PySpark, Scala eller R). |
Bemerkning
Alle filsystemmetoder er tilgjengelige i Python, PySpark, Scala og R-notatbøker med mindre annet er oppgitt. Scala bruker camelCase parameternavn (for eksempel createPath i stedet for create_path, maxBytes i stedet for max_bytes).
For monterings- og avmonteringsoperasjoner, se Filmontering og avmontering.
Bemerkning
Husk følgende begrensninger og hensyn når du jobber med notebookutils.fs:
-
Stioppførsel varierer etter notatboktype: I Spark-notatbøker løses relative stier til standard Lakehouse ABFSS-sti. I Python-notatbøker løses relative stier til den lokale filsystemets arbeidsmappe (
/home/trusted-service-user/work). -
Samtidige skrivebegrensninger:
notebookutils.fs.append()ognotebookutils.fs.put()støtter ikke samtidige skrivinger til samme fil på grunn av mangel på atomisitetsgarantier. -
Legge til løkkeforsinkelse: Når du bruker
notebookutils.fs.append()in-løkker, legg til 0,5–1 sekunds hvile mellom skrivingene for dataintegritet. -
OneLake snarveibegrensninger: For S3/GCS-type snarveier, bruk monterte stier i stedet for ABFS-stier for
cp()ogfastcp()operasjoner. -
Begrensninger på tvers av regioner:
fastcp()støtter ikke kopiering av filer i OneLake på tvers av regioner. Brukcp()i stedet. - Runtime-versjon: NotebookUtils er designet for å fungere med Spark 3.4 (Runtime v1.2) og nyere.
-
cp()Atferd i Python-notatbøker: I Python-notatbøkercp()brukes internt samme azcopy-baserte mekanisme somfastcp(), så begge metodene oppfører seg identisk.
NotebookUtils fungerer med filsystemet på samme måte som Spark API-er. Ta notebookutils.fs.mkdirs() for eksempel bruken av Lakehouse:
| Forbruk | Relativ bane fra HDFS-rot | Absolutt bane for ABFS-filsystem | Absolutt bane for lokalt filsystem i drivernode |
|---|---|---|---|
| Ikke-standard Lakehouse | Støttes ikke | notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") |
notebookutils.fs.mkdirs("file:/<new_dir>") |
| Standard 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>") |
For standard Lakehouse er filstier montert i notatboken din med en standard filcache-tidsavslutning på 120 sekunder. Dette betyr at filer er bufret i notatbokens lokale midlertidige mappe i 120 sekunder, selv om de fjernes fra Lakehouse. Hvis du vil endre timeout-regelen, kan du avmontere standard Lakehouse-filstiene og montere dem igjen med en annen
fileCacheTimeoutverdi.For ikke-standard Lakehouse-konfigurasjoner kan du sette riktig
fileCacheTimeoutparameter under montering av Lakehouse-stiene. Hvis du angir tidsavbruddet til 0, sikrer du at den nyeste filen hentes fra Lakehouse-serveren.
Liste filer
For å liste innholdet i en katalog, bruk notebookutils.fs.ls('Your directory path'). Eksempel:
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-et oppfører seg forskjellig når det notebookutils.fs.ls() bruker en relativ sti, avhengig av hvilken type notatbok det er.
I en Spark-notatblokk: Den relative banen er relativ til standard Lakehouses ABFSS-bane.
notebookutils.fs.ls("Files")peker for eksempel tilFiles-katalogen i standard Lakehouse.Eksempel:
notebookutils.fs.ls("Files/sample_datasets/public_holidays.parquet")I en Python-notatbok: Den relative stien er relativ til det lokale filsystemets arbeidskatalog, som som standard er
/home/trusted-service-user/work. Derfor bør du bruke hele banen i stedet for en relativ banenotebookutils.fs.ls("/lakehouse/default/Files")for å få tilgang tilFileskatalogen i standard Lakehouse.Eksempel:
notebookutils.fs.ls("/lakehouse/default/Files/sample_datasets/public_holidays.parquet")
Vis filegenskaper
Bruk notebookutils.fs.ls() for å inspisere filegenskaper som filnavn, filsti, filstørrelse, og om et element er 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)
Bruk f-strenger hvis du vil ha mer lesbar 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}")
Opprett ny katalog
Opprett en katalog hvis den ikke finnes, inkludert nødvendige overordnede 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
Kopier fil
Kopier en fil eller mappe på tvers av filsystemer. Sett recurse=True til å kopiere kataloger rekursivt.
notebookutils.fs.cp('source file or directory', 'destination file or directory', recurse=True)
Bemerkning
Python-notatbok: I Python-notatbøker cp() brukes internt samme azcopy-baserte mekanisme som fastcp(), noe som gir effektiv ytelse for begge metodene.
På grunn av begrensningene i OneLake-snarveien, anbefales det å bruke en montert sti i stedet for en abfss-sti når du må bruke notebookutils.fs.cp() den for å kopiere data fra en S3/GCS-type snarvei.
Tips
Sjekk alltid den boolske returverdien for å verifisere om operasjonen lyktes. Bruk notebookutils.fs.exists() den til å verifisere kildestien før du starter en kopieringsoperasjon.
Følgende eksempel viser en krysslagringskopi fra standard Lakehouse til en ADLS Gen2-konto:
notebookutils.fs.cp(
"Files/local_data",
"abfss://<container>@<account>.dfs.core.windows.net/remote_data",
recurse=True
)
Performant kopieringsfil
fastcp Bruk for mer effektive kopieringsoperasjoner, spesielt med store datavolumer. Parameteren recurse er som standard .True
notebookutils.fs.fastcp('source file or directory', 'destination file or directory', recurse=True)
Tips
Bruk fastcp() i stedet for cp() store dataoverføringer. Metoden fastcp bruker azcopy under panseret, som gir betydelig bedre gjennomstrømning for massefiloperasjoner. I Python-notatbøker bruker begge cp() og fastcp() samme underliggende mekanisme.
Husk disse hensynene:
-
notebookutils.fs.fastcp()støtter ikke kopiering av filer i OneLake på tvers av regioner. I dette tilfellet kan du brukenotebookutils.fs.cp()i stedet. - På grunn av begrensningene i OneLake-snarveien, anbefales det å bruke en montert sti i stedet for en abfss-sti når du må bruke
notebookutils.fs.fastcp()den for å kopiere data fra en S3/GCS-type snarvei.
Forhåndsvis filinnhold
Returner opp til de første max_bytes bytene i en fil som en UTF-8-streng.
notebookutils.fs.head('file path', max_bytes)
Tips
For store filer, bruk head() med en passende max_bytes verdi for å unngå minneproblemer. Standardverdien er 100 KB (1024 * 100).
Følgende eksempel leser de første 1 000 bytene av en fil:
content = notebookutils.fs.head("Files/data/sample.txt", 1000)
print(content)
Bemerkning
Standardverdien for max_bytes varierer mellom språk: Python- og Scala-notatbøker bruker 102400 (100 KB), mens R-notatbøker bruker 65535 (64 KB). I Scala kalles maxBytesdenne parameteren .
Flytt fil
Flytt en fil eller mappe på tvers av filsystemer.
notebookutils.fs.mv('source file or directory', 'destination directory', create_path=True, overwrite=True)
Viktig!
Standardparameteren create_path varierer etter kjøretid:
-
Spark-notatbøker (PySpark, Scala, R): går som standard til
False(falsei Scala,FALSEi R). Forelderkatalogen må eksistere før flytteoperasjonen. -
Python-notatbøker: standard er .
TrueForeldrekatalogen opprettes automatisk hvis den ikke eksisterer.
For å sikre konsistent oppførsel på tvers av kjøretider, sett parameteren create_path eksplisitt i koden din. I Scala kalles createPathdenne parameteren .
Bruk navngitte parametere hvis du vil ha klarere kode:
notebookutils.fs.mv("Files/source.csv", "Files/new_folder/dest.csv", create_path=True, overwrite=True)
Skrive fil
Skriv en UTF-8-streng til 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
Tilføy innhold til en fil
Legg til en UTF-8-streng 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
Viktig!
notebookutils.fs.append()
notebookutils.fs.put() og støtter ikke samtidig skriving til samme fil på grunn av mangel på atomisitetsgarantier.
Når du bruker API-et notebookutils.fs.append i en for løkke for å skrive til samme fil, legg til en sleep setning på omtrent 0,5 til 1 sekund mellom de gjentakende skrivingene. Denne anbefalingen skyldes at notebookutils.fs.append API-ens interne flush-operasjon er asynkron, så en kort forsinkelse bidrar til å sikre dataintegritet.
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
Slette fil eller katalog
Fjern en fil eller katalog. Sett recurse=True til å fjerne kataloger rekursivt.
notebookutils.fs.rm('file path', recurse=True)
Sjekk om en fil eller katalog eksisterer
Sjekk om en fil eller mappe finnes på den angitte stien. Den returnerer True hvis stien eksisterer; ellers returnerer Falseden .
notebookutils.fs.exists("Files/data/input.csv")
Tips
Bruk exists() før du utfører filoperasjoner for å forhindre feil. For eksempel, sjekk at en kildefil eksisterer før du prøver å kopiere eller flytte 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.")
Hent filegenskaper
Få egenskaper for en sti som et kart over navn-verdi-par. Det støttes kun for Azure Blob Storage-stier.
Bemerkning
Metoden getProperties er kun tilgjengelig i Python-notatbøker. Det støttes ikke i Spark-notatbøker (PySpark, Scala eller R).
Parametere:
| Parameter | Type | Påkrevd | Beskrivelse |
|---|---|---|---|
path |
string | Ja | ABFS-sti til filen eller katalogen. |
Returer: En ordbok (kart) som inneholder metadata-egenskaper som filstørrelse, opprettelsestid, sist endret tid og innholdstype.
properties = notebookutils.fs.getProperties("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>")
print(properties)