Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
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()janotebookutils.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 sijaancp()-parametria. - Ajonaikainen versio: NotebookUtils on suunniteltu toimimaan Spark 3.4 (Runtime v1.2) ja uudempien versioiden kanssa.
-
cp()käyttäytyminen Python-muistikirjoissa: Python-muistikirjoissacp()käytetään sisäisesti samaa azcopy-pohjaista mekanismia kuinfastcp(), 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
fileCacheTimeoutarvolla.Ei-oletusasetuksissa Lakehouse-konfiguraatioissa voit asettaa sopivan
fileCacheTimeoutparametrin 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 LakehousenFiles-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 LakehousenFiles-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ää -toimintoanotebookutils.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(falseScalassa,FALSER:ssä). Vanhemman hakemiston on oltava olemassa ennen siirto-operaatiota. -
Python-muistikirjat: oletuksena .
TrueVanhempihakemisto 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)