Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
notebookutils.fs tilbyder værktøjer til arbejde med forskellige filsystemer, herunder Azure Data Lake Storage (ADLS) Gen2 og Azure Blob Storage. Sørg for at konfigurere adgang til Azure Data Lake Storage Gen2 og Azure Blob Storage korrekt.
Kør følgende kommandoer for at få en oversigt over de tilgængelige metoder:
notebookutils.fs.help()
Følgende tabel viser de tilgængelige filsystemmetoder:
| Metode | Signatur | Beskrivelse |
|---|---|---|
ls |
ls(path: String): Array |
Lister indholdet af en mappe. |
mkdirs |
mkdirs(path: String): Boolean |
Opretter den givne mappe, hvis den ikke findes, og opretter også nødvendige overordnede mapper. |
cp |
cp(src: String, dest: String, recurse: Boolean = false): Boolean |
Kopierer en fil eller mappe, muligvis på tværs af filsystemer. |
fastcp |
fastcp(src: String, dest: String, recurse: Boolean = true, extraConfigs: Map = None): Boolean |
Kopierer en fil eller mappe via azcopy for bedre ydeevne med store datavolumener. |
mv |
mv(src: String, dest: String, create_path: Boolean, overwrite: Boolean = false): Boolean |
Flytter en fil eller mappe, muligvis på tværs af filsystemer. |
put |
put(file: String, content: String, overwrite: Boolean = false): Boolean |
Skriver den givne streng ud til en fil, kodet i UTF-8. |
head |
head(file: String, max_bytes: int = 1024 * 100): String |
Returnerer op til de første max_bytes bytes af den givne fil som en streng kodet i UTF-8. |
append |
append(file: String, content: String, createFileIfNotExists: Boolean = false): Boolean |
Tilføjer indholdet til en fil. |
rm |
rm(path: String, recurse: Boolean = false): Boolean |
Fjerner en fil eller mappe. |
exists |
exists(path: String): Boolean |
Tjekker om der findes en fil eller mappe. |
getProperties |
getProperties(path: String): Map |
Får egenskaberne for den givne sti. Tilgængelig kun i Python-notebooks (ikke understøttet i PySpark, Scala eller R). |
Bemærkning
Alle filsystemmetoder er tilgængelige i Python, PySpark, Scala og R-notebooks, medmindre andet er angivet. Scala bruger camelCase parameternavne (for eksempel createPath i stedet for create_path, maxBytes i stedet for max_bytes).
For monterings- og afmonteringsoperationer, se Filmontering og afmontering.
Bemærkning
Husk følgende begrænsninger og overvejelser, når du arbejder med notebookutils.fs:
-
Stiadfærd varierer efter notesbogstype: I Spark-notebooks afløses relative stier til standard Lakehouse ABFSS-sti. I Python-notebooks løses relative stier til den lokale filsystem-arbejdsmappe (
/home/trusted-service-user/work). -
Samtidige skrivebegrænsninger:
notebookutils.fs.append()ognotebookutils.fs.put()understøtter ikke samtidige skrivninger til den samme fil på grund af manglende atomitetsgarantier. -
Appende loop delay: Når du bruger
notebookutils.fs.append()in-loops, tilføj 0,5-1 sekunds dvale mellem skrivningerne for dataintegritet. -
OneLake genvejsbegrænsninger: For S3/GCS-type genveje, brug monterede stier i stedet for ABFS-stier for
cp()ogfastcp()operationer. -
Begrænsninger på tværs af regioner:
fastcp()understøtter ikke kopiering af filer i OneLake på tværs af regioner. Brugcp()i stedet. - Runtime-version: NotebookUtils er designet til at fungere med Spark 3.4 (Runtime v1.2) og nyere.
-
cp()adfærd i Python-notebooks: I Python-notebookscp()bruges internt den samme azcopy-baserede mekanisme somfastcp(), så begge metoder opfører sig identisk.
NotebookUtils fungerer sammen med filsystemet på samme måde som Spark-API'er.
notebookutils.fs.mkdirs() Tag for eksempel brugen af Lakehouse:
| Forbrug | Relativ sti fra HDFS-rod | Absolut sti til ABFS-filsystem | Absolut sti til lokalt filsystem i drivernoden |
|---|---|---|---|
| Ikke-standard Lakehouse | Ikke understøttet | notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") |
notebookutils.fs.mkdirs("file:/<new_dir>") |
| Standard Lakehouse | Mappe 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 monteret i din notesbog med en standard filcache-timeout på 120 sekunder. Det betyder, at filer caches i notesbogens lokale midlertidige mappe i 120 sekunder, selvom de fjernes fra Lakehouse. Hvis du vil ændre timeout-reglen, kan du afmontere standardstierne i Lakehouse-filen og montere dem igen med en anden
fileCacheTimeoutværdi.For ikke-standard Lakehouse-konfigurationer kan du sætte den relevante
fileCacheTimeoutparameter under monteringen af Lakehouse-stierne. Hvis timeout angives til 0, sikrer du, at den nyeste fil hentes fra Lakehouse-serveren.
Liste filer
For at liste indholdet af en mappe, brug 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 opfører sig forskelligt, når det notebookutils.fs.ls() bruger en relativ sti, afhængigt af typen af notesbog.
I en Spark-notesbog: Den relative sti er relativ i forhold til Standard Lakehouses ABFSS-sti.
notebookutils.fs.ls("Files")peger f.eks. på mappenFilesi standardmappen Lakehouse.Eksempel:
notebookutils.fs.ls("Files/sample_datasets/public_holidays.parquet")I en Python-notebook: Den relative sti er relativ til det lokale filsystems arbejdsmappe, som som standard er
/home/trusted-service-user/work. Derfor skal du bruge den fulde sti i stedet for en relativ stinotebookutils.fs.ls("/lakehouse/default/Files")til at få adgang til denFilesmappe i Standard Lakehouse.Eksempel:
notebookutils.fs.ls("/lakehouse/default/Files/sample_datasets/public_holidays.parquet")
Vis filegenskaber
Brug notebookutils.fs.ls() til at inspicere filegenskaber som filnavn, filsti, filstørrelse og om et element er en fil eller mappe.
files = notebookutils.fs.ls('Your directory path')
for file in files:
print(file.name, file.isDir, file.isFile, file.path, file.size)
Brug f-strenge, hvis du vil have mere læsbart output:
files = notebookutils.fs.ls("Files/data")
for file in files:
print(f"Name: {file.name}, Size: {file.size}, IsDir: {file.isDir}, Path: {file.path}")
Opret en ny mappe
Opret en mappe, hvis den ikke findes, inklusive eventuelle 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å tværs af filsystemer. Indstil recurse=True til at kopiere kataloger rekursivt.
notebookutils.fs.cp('source file or directory', 'destination file or directory', recurse=True)
Bemærkning
Python-notesbogsnote: I Python-notebooks cp() bruges internt den samme azcopy-baserede mekanisme som fastcp(), hvilket giver effektiv ydeevne for begge metoder.
På grund af begrænsningerne ved OneLake-genvejen, anbefales det, når du skal bruge notebookutils.fs.cp() den til at kopiere data fra en S3/GCS-genvej, at bruge en monteret sti i stedet for en abfss-sti.
Tips
Tjek altid den booleske returværdi for at verificere, om operationen lykkedes. Brug notebookutils.fs.exists() den til at verificere kildestien, før du starter en kopieringsoperation.
Følgende eksempel viser en krydslagringskopi 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
)
Kopifil med effektiv udførelse
fastcp Brug den til mere effektive kopieringsoperationer, især med store datamængder. Parameteren recurse er som standard .True
notebookutils.fs.fastcp('source file or directory', 'destination file or directory', recurse=True)
Tips
Brug fastcp() i stedet for cp() til store dataoverførsler. Metoden fastcp bruger azcopy under motorhjelmen, hvilket giver betydeligt bedre gennemstrømning til masse-filoperationer. I Python-notebooks bruger begge cp() og fastcp() den samme underliggende mekanisme.
Hav disse overvejelser i tankerne:
-
notebookutils.fs.fastcp()understøtter ikke kopiering af filer i OneLake på tværs af regioner. I dette tilfælde kan du brugenotebookutils.fs.cp()i stedet. - På grund af begrænsningerne ved OneLake-genvejen, anbefales det, når du skal bruge
notebookutils.fs.fastcp()den til at kopiere data fra en S3/GCS-genvej, at bruge en monteret sti i stedet for en abfss-sti.
Vis filindhold
Returner op til de første max_bytes bytes i en fil som en UTF-8-streng.
notebookutils.fs.head('file path', max_bytes)
Tips
For store filer bruges head() med en passende max_bytes værdi for at undgå hukommelsesproblemer. Standardværdien er 100 KB (1024 * 100).
Følgende eksempel læser de første 1.000 bytes af en fil:
content = notebookutils.fs.head("Files/data/sample.txt", 1000)
print(content)
Bemærkning
Standardværdien for max_bytes varierer mellem sprog: Python- og Scala-notebooks bruger 102400 (100 KB), mens R-notebooks bruger 65535 (64 KB). I Scala hedder maxBytesdenne parameter .
Flyt fil
Flyt en fil eller mappe på tværs af filsystemer.
notebookutils.fs.mv('source file or directory', 'destination directory', create_path=True, overwrite=True)
Vigtigt!
Parameterstandarden create_path varierer med kørselstid:
-
Spark-notebooks (PySpark, Scala, R): går som standard til
False(falsei Scala,FALSEi R). Forældremappen skal eksistere før flytningsoperationen. -
Python-notebooks: standarden er .
TrueForældremappen oprettes automatisk, hvis den ikke eksisterer.
For at sikre ensartet adfærd på tværs af runtimes, skal du eksplicit sætte parameteren create_path i din kode. I Scala hedder createPathdenne parameter .
Brug navngivne parametre, hvis du vil have klarere kode:
notebookutils.fs.mv("Files/source.csv", "Files/new_folder/dest.csv", create_path=True, overwrite=True)
Skriv 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
Føj indhold til en fil
Tilføj en UTF-8-streng til 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
Vigtigt!
notebookutils.fs.append()
notebookutils.fs.put() og understøtter ikke samtidig skrivning til samme fil på grund af manglende atomsikkerhedsgarantier.
Når du bruger notebookutils.fs.append API'et i en for løkke til at skrive til den samme fil, tilføj en sleep sætning på cirka 0,5 til 1 sekund mellem de gentagne skrivninger. Denne anbefaling skyldes, at notebookutils.fs.append API'ens interne flush handling er asynkron, så en kort forsinkelse hjælper med at 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
Slet fil eller mappe
Fjern en fil eller mappe. Indstil recurse=True at fjerne mapper rekursivt.
notebookutils.fs.rm('file path', recurse=True)
Tjek om der findes en fil eller mappe
Tjek om en fil eller mappe findes på den angivne sti. Den returnerer True , hvis stien eksisterer; ellers returnerer Falseden .
notebookutils.fs.exists("Files/data/input.csv")
Tips
Brug exists() før udførelse af filoperationer for at forhindre fejl. For eksempel skal du tjekke, at der findes en kildefil, før du prøver at 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.")
Få filegenskaber
Få egenskaber for en sti som et kort af navn-værdi-par. Det understøttes kun for Azure Blob Storage-stier.
Bemærkning
Metoden getProperties er kun tilgængelig i Python-notebooks. Det understøttes ikke i Spark-notebooks (PySpark, Scala eller R).
Parametre:
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
path |
String | Ja | ABFS-sti til filen eller mappen. |
Returer: En ordbog (kort), der indeholder metadata-egenskaber såsom filstørrelse, oprettelsestid, sidst ændrede tid og indholdstype.
properties = notebookutils.fs.getProperties("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>")
print(properties)