Jaa


NotebookUtils file system utilities for Fabric

notebookutils.fs tarjoaa apuohjelmia erilaisten tiedostojärjestelmien käsittelyyn, mukaan lukien Azure Data Lake Storage (ADLS) Gen2 ja Azure Blob Storage. Varmista, että määrität Azure Data Lake Storage Gen2: n ja Azure Blob -säilön käyttöoikeudet asianmukaisesti.

Suorita seuraavat komennot, jotta saat yleiskatsauksen käytettävissä olevista menetelmistä:

notebookutils.fs.help()

Seuraava taulukko listaa saatavilla olevat tiedostojärjestelmämenetelmät:

Menetelmä Allekirjoitus Description
ls ls(path: String): Array Listaa hakemiston sisällön.
mkdirs mkdirs(path: String): Boolean Luo kyseisen hakemiston, jos sitä ei ole, ja luo myös tarvittavat vanhemmat hakemistot.
cp cp(src: String, dest: String, recurse: Boolean = false): Boolean Kopioi tiedoston tai hakemiston, mahdollisesti tiedostojärjestelmien välillä.
fastcp fastcp(src: String, dest: String, recurse: Boolean = true, extraConfigs: Map = None): Boolean Kopioi tiedoston tai hakemiston azcopyn kautta paremman suorituskyvyn saavuttamiseksi suurilla datamäärillä.
mv mv(src: String, dest: String, create_path: Boolean, overwrite: Boolean = false): Boolean Siirtää tiedoston tai hakemiston, mahdollisesti tiedostojärjestelmien välillä.
put put(file: String, content: String, overwrite: Boolean = false): Boolean Kirjoittaa annetun merkkijonon tiedostoksi, joka on koodattu UTF-8:lla.
head head(file: String, max_bytes: int = 1024 * 100): String Palauttaa tiedoston ensimmäisiin max_bytes tavuihin asti merkkijonona, joka on koodattu UTF-8:aan.
append append(file: String, content: String, createFileIfNotExists: Boolean = false): Boolean Liittää sisällön tiedostoon.
rm rm(path: String, recurse: Boolean = false): Boolean Poistaa tiedoston tai hakemiston.
exists exists(path: String): Boolean Tarkistaa, onko olemassa tiedosto tai hakemisto.
getProperties getProperties(path: String): Map Saa annetun polun ominaisuudet. Saatavilla vain Python-muistikirjoissa (ei tuettu PySparkissa, Scalassa tai R:ssä).

Muistio

Kaikki tiedostojärjestelmämenetelmät ovat saatavilla Python-, PySpark-, Scala- ja R-muistikirjoissa, ellei toisin mainita. Scala käyttää camelCase-parametrien nimiä (esimerkiksi createPath , sen create_pathmaxBytes sijaan ).max_bytes

Asennus- ja irrotustoiminnoista katso Tiedostokiinnitys ja irrotus.

Muistio

Pidä seuraavat rajoitukset ja seikat mielessä, kun työskentelet niiden kanssa notebookutils.fs:

  • Polun käyttäytyminen vaihtelee muistikirjatyypin mukaan: Spark-muistikirjoissa relatiiviset polut ratkeavat oletuspolun Lakehousen ABFSS-polulle. Python-muistikirjoissa suhteelliset polut ratkeavat paikalliseen tiedostojärjestelmän työhakemistoon (/home/trusted-service-user/work).
  • Samanaikaiset kirjoitusrajoitukset: notebookutils.fs.append() ja notebookutils.fs.put() eivät tue samanaikaisia kirjoituksia samaan tiedostoon, koska atomisiteettitakuut puuttuvat.
  • Lisäsilmukan viive: Kun käytät notebookutils.fs.append() silmukoiden sisällä, lisää 0,5–1 sekunnin lepotila kirjoitusten väliin datan eheyden vuoksi.
  • OneLake-pikakuvakkeiden rajoitukset: S3/GCS-tyyppisissä pikakuvakkeissa käytetään asennettuja polkuja ABFS-polkujen sijaan ja cp()fastcp() operaatioissa.
  • Alueiden väliset rajoitukset: fastcp() ei tue tiedostojen kopioimista OneLakessa eri alueiden välillä. Käytä sen sijaan cp()-parametria.
  • Ajonaikainen versio: NotebookUtils on suunniteltu toimimaan Spark 3.4 (Runtime v1.2) ja uudempien versioiden kanssa.
  • cp() käyttäytyminen Python-muistikirjoissa: Python-muistikirjoissa cp() käytetään sisäisesti samaa azcopy-pohjaista mekanismia kuin fastcp(), joten molemmat menetelmät käyttäytyvät identtisesti.

NotebookUtils toimii tiedostojärjestelmän kanssa samalla tavalla kuin Spark-ohjelmointirajapinnat. Otetaan notebookutils.fs.mkdirs() esimerkiksi Lakehousen käyttö:

Käyttö Suhteellinen polku HDFS-pääkansiosta ABFS-tiedostojärjestelmän absoluuttinen polku Paikallisen tiedostojärjestelmän absoluuttinen polku ohjainsolmussa
Ei-oletusjärvitalo Ei tuettu notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") notebookutils.fs.mkdirs("file:/<new_dir>")
Oletusjärvitalo Hakemisto kohdassa 'Tiedostot' tai 'Taulukot': 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>")
  • Oletus-Lakehousessa tiedostopolut liitetään muistikirjaan oletustiedostovälimuistin aikakatkaisulla, joka on 120 sekuntia. Tämä tarkoittaa, että tiedostot tallennetaan muistikirjan paikalliseen väliaikaiseen kansioon 120 sekunniksi, vaikka ne poistettaisiin Lakehousesta. Jos haluat muuttaa aikakatkaisusääntöä, voit irrottaa oletustiedostopolut Lakehouse-tiedostopolut ja asentaa ne uudelleen eri fileCacheTimeout arvolla.

  • Ei-oletusasetuksissa Lakehouse-konfiguraatioissa voit asettaa sopivan fileCacheTimeout parametrin Lakehouse-polkujen asennuksen yhteydessä. Aikakatkaisun asettaminen arvoon 0 varmistaa, että uusin tiedosto noudetaan Lakehouse-palvelimesta.

Luettelo tiedostoista

Hakemiston sisällön listaamiseksi käytä notebookutils.fs.ls('Your directory path'). Esimerkkejä:

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 notebookutils.fs.ls() käyttäytyy eri tavalla relatiivista polkua käyttäessä, riippuen muistikirjan tyypistä.

  • Spark-muistikirjassa: Suhteellinen polku on suhteessa oletusarvoisen Lakehousen ABFSS-polkuun. notebookutils.fs.ls("Files") esimerkiksi osoittaa oletusasetusten Lakehousen Files-hakemistoon.

    Esimerkkejä:

    notebookutils.fs.ls("Files/sample_datasets/public_holidays.parquet")
    
  • Python-muistikirjassa: Suhteellinen polku on suhteessa paikallisen tiedostojärjestelmän työhakemistoon, joka oletuksena on /home/trusted-service-user/work. Siksi sinun tulee käyttää koko polkua suhteellisen polun sijaan, notebookutils.fs.ls("/lakehouse/default/Files") käyttääksesi oletusarvoisen Lakehousen Files-hakemistoa.

    Esimerkkejä:

    notebookutils.fs.ls("/lakehouse/default/Files/sample_datasets/public_holidays.parquet")
    

Näytä tiedoston ominaisuudet

Sitä käytetään notebookutils.fs.ls() tiedoston ominaisuuksien, kuten tiedostonimen, tiedostopolun, tiedostokoon ja sen, onko kohde tiedosto vai hakemisto, tarkasteluun.

files = notebookutils.fs.ls('Your directory path')
for file in files:
    print(file.name, file.isDir, file.isFile, file.path, file.size)

Käytä f-stringejä, jos haluat helpommin luettavaa tulosta:

files = notebookutils.fs.ls("Files/data")
for file in files:
    print(f"Name: {file.name}, Size: {file.size}, IsDir: {file.isDir}, Path: {file.path}")

Luo uusi hakemisto

Luo hakemisto, jos sitä ei ole, mukaan lukien tarvittavat vanhemmat hakemistot.

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 

Kopioi tiedosto

Kopioi tiedosto tai hakemisto tiedostojärjestelmien välillä. Asetetaan recurse=True kopioimaan hakemistoja rekursiivisesti.

notebookutils.fs.cp('source file or directory', 'destination file or directory', recurse=True)

Muistio

Python-muistikirjan huomautus: Python-muistikirjoissa cp() käytetään sisäisesti samaa azcopy-pohjaista mekanismia kuin fastcp(), tarjoten tehokkaan suorituskyvyn molemmille menetelmille . OneLake-pikakuvakkeen rajoitusten vuoksi, kun sinun täytyy notebookutils.fs.cp() kopioida tietoja S3/GCS-tyyppisestä pikanäppäimestä, suositellaan käyttämään mount-polkua abfss-polun sijaan.

Vinkki

Tarkista aina Boolen palautusarvo varmistaaksesi, onnistuiko operaatio. Käytä notebookutils.fs.exists() lähdepolun varmistamiseen ennen kopiointioperaation aloittamista.

Seuraava esimerkki näyttää ristiintallennuskopion oletus-Lakehousesta ADLS Gen2 -tilille:

notebookutils.fs.cp(
    "Files/local_data",
    "abfss://<container>@<account>.dfs.core.windows.net/remote_data",
    recurse=True
)

Suorita kopiotiedosto

Käyttö fastcp tehokkaampiin kopiointitoimintoihin, erityisesti suurilla datamäärillä. Parametri recurse on oletuksena .True

notebookutils.fs.fastcp('source file or directory', 'destination file or directory', recurse=True)

Vinkki

Käytä fastcp() suurten tietojen siirron sijaan cp() . Menetelmä fastcp käyttää azcopya konepellin alla, mikä tarjoaa merkittävästi paremman läpimenon massatiedostotoiminnoissa. Python-muistikirjoissa molemmat cp() käyttävät fastcp() samaa taustalla olevaa mekanismia.

Pidä nämä seikat mielessä:

  • notebookutils.fs.fastcp() ei tue tiedostojen kopiointia OneLakessa eri alueiden välillä. Tässä tapauksessa voit käyttää -toimintoa notebookutils.fs.cp() sen sijaan.
  • OneLake-pikakuvakkeen rajoitusten vuoksi, kun sinun täytyy notebookutils.fs.fastcp() kopioida tietoja S3/GCS-tyyppisestä pikanäppäimestä, suositellaan käyttämään mount-polkua abfss-polun sijaan.

Esikatselutiedoston sisältö

Palauta tiedoston ensimmäisiin max_bytes tavuihin UTF-8-merkkijonona.

notebookutils.fs.head('file path', max_bytes)

Vinkki

Suurille tiedostoille käytä head() sopivaa max_bytes arvoa muistiongelmien välttämiseksi. Oletusarvo on 100 KB (1024 * 100).

Seuraava esimerkki näyttää tiedoston ensimmäiset 1 000 tavua:

content = notebookutils.fs.head("Files/data/sample.txt", 1000)
print(content)

Muistio

Oletusarvo vaihtelee max_bytes kielten välillä: Python- ja Scala-muistikirjat käyttävät 102400 (100 KB), kun taas R-muistikirjat 65535 käyttävät (64 KB). Scalassa tätä parametria kutsutaan maxBytes.

Siirrä tiedosto

Siirrä tiedosto tai hakemisto tiedostojärjestelmien välillä.

notebookutils.fs.mv('source file or directory', 'destination directory', create_path=True, overwrite=True)

Tärkeää

Parametrin create_path oletusarvo vaihtelee ajonajan mukaan:

  • Spark-muistikirjat (PySpark, Scala, R): oletuksena False (false Scalassa, FALSE R:ssä). Vanhemman hakemiston on oltava olemassa ennen siirto-operaatiota.
  • Python-muistikirjat: oletuksena .True Vanhempihakemisto luodaan automaattisesti, jos sitä ei ole olemassa.

Varmistaaksesi johdonmukaisen käytöksen eri ajonaikaisissa, aseta parametri create_path koodiisi eksplisiittisesti. Scalassa tätä parametria kutsutaan createPath.

Käytä nimettyjä parametreja, jos haluat selkeämpää koodia:

notebookutils.fs.mv("Files/source.csv", "Files/new_folder/dest.csv", create_path=True, overwrite=True)

Kirjoita tiedosto

Kirjoita UTF-8-merkkijono tiedostoon.

notebookutils.fs.put("file path", "content to write", True) # Set the last parameter as True to overwrite the file if it already exists

Sisällön liilisääminen tiedostoon

Lisää tiedostoon UTF-8-merkkijono.

notebookutils.fs.append("file path", "content to append", True) # Set the last parameter as True to create the file if it doesn't exist

Tärkeää

notebookutils.fs.append() Eikä notebookutils.fs.put() tue samanaikaista kirjoittamista samaan tiedostoon, koska atomiteettitakuita ei ole.

Kun käytät notebookutils.fs.append API:a for silmukassa samaan tiedostoon kirjoittamiseen, lisää sleep noin 0,5–1 sekunnin lause toistuvien kirjoitusten väliin. Tämä suositus johtuu siitä, että notebookutils.fs.append-ohjelmointirajapinnan sisäinen flush-toiminto on asynkroninen, joten lyhyt viive auttaa varmistamaan tietojen eheyden.

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

Poista tiedosto tai hakemisto

Poista tiedosto tai hakemisto. Aseta recurse=True poistamaan hakemistot rekursiivisesti.

notebookutils.fs.rm('file path', recurse=True) 

Tarkista, onko olemassa tiedosto tai hakemisto

Tarkista, onko tiedosto tai hakemisto olemassa määritetyllä polulla. Se palautuu True , jos polku on olemassa; muuten se palauttaa False.

notebookutils.fs.exists("Files/data/input.csv")

Vinkki

Käytä exists() ennen tiedostotoimintojen suorittamista virheiden estämiseksi. Esimerkiksi tarkista, että lähdetiedosto on olemassa ennen kuin yrität kopioida tai siirtää sitä.

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

Hae tiedoston ominaisuudet

Hae ominaisuudet polulle nimi-arvoparien kuvauksena. Se on tuettu vain Azure Blob Storage -poluille.

Muistio

Menetelmä getProperties on saatavilla vain Python-muistikirjoissa. Sitä ei tueta Spark-muistikirjoissa (PySpark, Scala tai R).

Parametrit:

Parametri Tyyppi Pakollinen Description
path merkkijono Kyllä ABFS-polku tiedostoon tai hakemistoon.

Palautukset: Sanakirja (kartta), joka sisältää metatietoominaisuuksia, kuten tiedoston koon, luontiajan, viimeksi muokatun ajan ja sisältötyypin.

properties = notebookutils.fs.getProperties("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>")
print(properties)