Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
notebookutils.fs poskytuje nástroje na prácu s rôznymi súborovými systémami, vrátane Azure Data Lake Storage (ADLS) Gen2 a Azure Blob Storage. Nezabudnite nakonfigurovať prístup k službe Azure Data Lake Storage Gen2 a úložisku Azure Blob Storage správne.
Spustite nasledujúce príkazy a získajte prehľad dostupných metód:
notebookutils.fs.help()
Nasledujúca tabuľka uvádza dostupné metódy súborového systému:
| Method | Podpis | Description |
|---|---|---|
ls |
ls(path: String): Array |
Uvádza obsah adresára. |
mkdirs |
mkdirs(path: String): Boolean |
Vytvorí daný adresár, ak neexistuje, a zároveň vytvorí všetky potrebné rodičovské adresáre. |
cp |
cp(src: String, dest: String, recurse: Boolean = false): Boolean |
Kopíruje súbor alebo adresár, pravdepodobne naprieč súborovými systémami. |
fastcp |
fastcp(src: String, dest: String, recurse: Boolean = true, extraConfigs: Map = None): Boolean |
Kopíruje súbor alebo adresár cez azcopy pre lepší výkon pri veľkých dátových objemoch. |
mv |
mv(src: String, dest: String, create_path: Boolean, overwrite: Boolean = false): Boolean |
Presúva súbor alebo adresár, prípadne naprieč súborovými systémami. |
put |
put(file: String, content: String, overwrite: Boolean = false): Boolean |
Zapíše daný reťazec do súboru zakódovaného v UTF-8. |
head |
head(file: String, max_bytes: int = 1024 * 100): String |
Vráti až do prvých max_bytes bajtov daného súboru ako reťazec zakódovaný v UTF-8. |
append |
append(file: String, content: String, createFileIfNotExists: Boolean = false): Boolean |
Pridáva obsah do súboru. |
rm |
rm(path: String, recurse: Boolean = false): Boolean |
Odstráni súbor alebo adresár. |
exists |
exists(path: String): Boolean |
Kontroluje, či existuje súbor alebo adresár. |
getProperties |
getProperties(path: String): Map |
Získa vlastnosti danej cesty. Dostupné iba v Python zápisníkoch (nie je podporované v PySparku, Scale ani R). |
Poznámka
Všetky metódy súborového systému sú dostupné v zápisníkoch Python, PySpark, Scala a R, pokiaľ nie je uvedené inak. Scala používa názvy parametrov camelCase (napríklad createPath namiesto create_path, namiesto maxBytes). max_bytes
Pre operácie primontovania a odmontovania pozri Súborové primontovanie a odmontovanie.
Poznámka
Majte na pamäti nasledujúce obmedzenia a úvahy pri práci s notebookutils.fs:
-
Správanie cesty sa líši podľa typu zápisníka: V Spark zápisníkoch sa relatívne cesty vyriešia na predvolenú ABFSS cestu Lakehouse. V Python zápisníkoch relatívne cesty vedú k lokálnemu pracovnému adresáru súborového systému (
/home/trusted-service-user/work). -
Obmedzenia súbežného zápisu:
notebookutils.fs.append()anotebookutils.fs.put()nepodporujú súbežné zápisy do toho istého súboru kvôli nedostatku záruk atómovosti. -
Oneskorenie slučky pripojenia: Pri použití
notebookutils.fs.append()v slučkách pridajte medzi zápisy 0,5-1 sekundu spánku pre integritu dát. -
Obmedzenia skratiek OneLake: Pre skratky typu S3/GCS použite namontované cesty namiesto ABFS ciest pre
cp()afastcp()operácie. -
Obmedzenia medzi regiónmi:
fastcp()nepodporuje kopírovanie súborov v OneLake medzi regiónmi. Použite namiesto tohocp(). - Runtime verzia: NotebookUtils je navrhnutý na spoluprácu so Spark 3.4 (Runtime v1.2) a vyšším.
-
cp()správanie v Python zápisníkoch: V Python zápisníkochcp()sa interne používa rovnaký mechanizmus založený na azcopy, takžefastcp()obe metódy sa správajú rovnako.
Pomôcky pre notebookUtils fungujú so systémom súborov rovnakým spôsobom ako rozhrania Spark API. Vezmime notebookutils.fs.mkdirs() si napríklad využitie jazerného domu:
| Použitie | Relatívna cesta z koreňa HDFS | Absolútna cesta k systému súborov ABFS | Absolútna cesta k lokálnemu systému súborov v uzli ovládača |
|---|---|---|---|
| Iný ako predvolený dom pri jazere | Nepodporované | notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") |
notebookutils.fs.mkdirs("file:/<new_dir>") |
| Predvolený lakehouse | Adresár pod 'Súbory' alebo 'Tabuľky': 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>") |
Pre predvolený lakehouse sú cesty k súborom pripojené do vášho zápisníka s predvoleným časovým limitom vyrovnávacej pamäte súborov 120 sekúnd. To znamená, že súbory sú uložené v lokálnom dočasnom priečinku zápisníka na 120 sekúnd, aj keď sú z jazerného domu odstránené. Ak chcete zmeniť pravidlo timeoutu, môžete odmontovať predvolené cesty súborov Lakehouse a pripojiť ich znova s inou hodnotou
fileCacheTimeout.Pre neštandardné konfigurácie jazerných domov môžete nastaviť príslušný
fileCacheTimeoutparameter počas montáže ciestík k jazerným domom. Nastavenie timeoutu na 0 zabezpečí, že najnovší súbor sa načíta zo servera Lakehouse.
Zoznam súborov
Na zoznam obsahu adresára použite notebookutils.fs.ls('Your directory path'). Napríklad:
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
notebookutils.fs.ls() API sa správa odlišne pri použití relatívnej cesty v závislosti od typu zápisníka.
v notebooku Spark: Relatívna cesta je relatívna k predvolenej ceste ABFSS lakehouse. Napríklad
notebookutils.fs.ls("Files")odkazuje naFilesadresár v predvolenom komplexe Lakehouse.Napríklad:
notebookutils.fs.ls("Files/sample_datasets/public_holidays.parquet")V Python zápisníku: Relatívna cesta je relatívna k pracovnému adresáru lokálneho súborového systému, ktorý je predvolene .
/home/trusted-service-user/workPreto by ste mali namiesto relatívnej cesty použiť úplnú cestunotebookutils.fs.ls("/lakehouse/default/Files")na prístup k adresáruFilesv predvolenom komplexe Lakehouse.Napríklad:
notebookutils.fs.ls("/lakehouse/default/Files/sample_datasets/public_holidays.parquet")
Zobrazenie vlastností súboru
Použite na notebookutils.fs.ls() kontrolu vlastností súboru, ako je názov súboru, cesta k súboru, veľkosť súboru a či je položka súbor alebo adresár.
files = notebookutils.fs.ls('Your directory path')
for file in files:
print(file.name, file.isDir, file.isFile, file.path, file.size)
Použite f-struny, ak chcete čitateľnejší výstup:
files = notebookutils.fs.ls("Files/data")
for file in files:
print(f"Name: {file.name}, Size: {file.size}, IsDir: {file.isDir}, Path: {file.path}")
Vytvorenie nového adresára
Vytvorte adresár, ak neexistuje, vrátane všetkých potrebných nadradených adresárov.
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
Kopírovať súbor
Skopírujte súbor alebo adresár naprieč súborovými systémami. Nastavte recurse=True kopírovanie adresárov rekurzívne.
notebookutils.fs.cp('source file or directory', 'destination file or directory', recurse=True)
Poznámka
Poznámka k Python notebooku: V Python notebookoch cp() sa interne používa rovnaký mechanizmus založený na azcopy, ktorý fastcp()poskytuje efektívny výkon pre obe metódy.
Kvôli obmedzeniam skratky OneLake, keď potrebujete notebookutils.fs.cp() použiť kopírovanie dát zo skratky typu S3/GCS, odporúča sa použiť pripojenú cestu namiesto abfss cesty.
Prepitné
Vždy skontrolujte návratovú hodnotu Booleovskej hodnoty, aby ste overili, či operácia bola úspešná. Použite na notebookutils.fs.exists() overenie zdrojovej cesty pred začiatkom kopírovania.
Nasledujúci príklad ukazuje cross-storage kópiu z predvoleného lakehouse na ADLS Gen2 účet:
notebookutils.fs.cp(
"Files/local_data",
"abfss://<container>@<account>.dfs.core.windows.net/remote_data",
recurse=True
)
Výkonný kopírovací súbor
Použitie fastcp na efektívnejšie kopírovacie operácie, najmä pri veľkých objemoch dát. Parameter recurse je predvolene .True
notebookutils.fs.fastcp('source file or directory', 'destination file or directory', recurse=True)
Prepitné
Používajte fastcp() namiesto na cp() veľké prenosy dát. Metóda fastcp používa azcopy pod kapotou, čo poskytuje výrazne lepšiu priepustnosť pre hromadné operácie so súbormi. V Python notebookoch používajú oba cp()fastcp() a rovnaký základný mechanizmus.
Majte na pamäti tieto úvahy:
-
notebookutils.fs.fastcp()nepodporuje kopírovanie súborov v OneLake medzi regiónmi. V tomto prípade môžete namiesto toho použiť funkciunotebookutils.fs.cp(). - Kvôli obmedzeniam skratky OneLake, keď potrebujete
notebookutils.fs.fastcp()použiť kopírovanie dát zo skratky typu S3/GCS, odporúča sa použiť pripojenú cestu namiesto abfss cesty.
Zobraziť ukážku obsahu súboru
Vráťte až do prvých max_bytes bajtov súboru ako reťazec UTF-8.
notebookutils.fs.head('file path', max_bytes)
Prepitné
Pri veľkých súboroch používajte head() s vhodnou max_bytes hodnotou, aby ste predišli problémom s pamäťou. Predvolená hodnota je 100 KB (1024 * 100).
Nasledujúci príklad číta prvých 1 000 bajtov súboru:
content = notebookutils.fs.head("Files/data/sample.txt", 1000)
print(content)
Poznámka
Predvolená hodnota pre max_bytes sa líši medzi jazykmi: notebooky v Pythone a Scale používajú 102400 (100 KB), zatiaľ čo zápisníky v R používajú 65535 (64 KB). V Scale sa tento parameter nazýva maxBytes.
Presunúť súbor
Presúvajte súbor alebo adresár medzi súborovými systémami.
notebookutils.fs.mv('source file or directory', 'destination directory', create_path=True, overwrite=True)
Dôležité
Predvolený create_path parameter sa líši podľa času behu:
-
Spark notebooky (PySpark, Scala, R): predvolene (
Falsefalsev Scale,FALSEv R). Rodičovský adresár musí existovať pred operáciou presunu. -
Python zápisníky: predvolene .
TrueRodičovský adresár sa automaticky vytvorí, ak neexistuje.
Aby ste zabezpečili konzistentné správanie naprieč runtime, explicitne nastavte create_path parameter vo svojom kóde. V Scale sa tento parameter nazýva createPath.
Ak chcete jasnejší kód, použite pomenované parametre:
notebookutils.fs.mv("Files/source.csv", "Files/new_folder/dest.csv", create_path=True, overwrite=True)
Napísať súbor
Zapíšte reťazec UTF-8 do súboru.
notebookutils.fs.put("file path", "content to write", True) # Set the last parameter as True to overwrite the file if it already exists
Pripojenie obsahu k súboru
Pridajte reťazec UTF-8 do súboru.
notebookutils.fs.append("file path", "content to append", True) # Set the last parameter as True to create the file if it doesn't exist
Dôležité
notebookutils.fs.append() a notebookutils.fs.put() nepodporujú súbežné písanie do toho istého súboru kvôli nedostatku záruk atómovosti.
Pri používaní notebookutils.fs.append API v slučke for na zápis do toho istého súboru pridajte sleep príkaz približne 0,5 až 1 sekundy medzi opakujúcimi sa zápismi. Toto odporúčanie je spôsobené tým, že notebookutils.fs.append interná operácia flush rozhrania API je asynchrónne, takže krátke oneskorenie pomáha zabezpečiť integritu údajov.
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
Odstránenie súboru alebo adresára
Odstráňte súbor alebo adresár. Nastavte recurse=True rekurzívne odstraňovanie adresárov.
notebookutils.fs.rm('file path', recurse=True)
Skontrolujte, či existuje súbor alebo adresár
Skontrolujte, či na určenej ceste existuje súbor alebo adresár. Vráti, True ak cesta existuje; inak vráti .False
notebookutils.fs.exists("Files/data/input.csv")
Prepitné
Použite pred exists() vykonaním súborových operácií na prediexit chýb. Napríklad si skontrolujte, či existuje zdrojový súbor, skôr než sa ho pokúsite skopírovať alebo presunúť.
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.")
Získajte vlastnosti súboru
Získajte vlastnosti pre cestu ako zobrazenie párov meno-hodnota. Je podporovaný iba pre Azure Blob Storage cesty.
Poznámka
Metóda getProperties je dostupná iba v Python zápisníkoch. Nie je podporovaný v Spark notebookoch (PySpark, Scala alebo R).
Parametre:
| Parameter | Typ | Požaduje sa | Description |
|---|---|---|---|
path |
Povrázok | Áno | ABFS cesta k súboru alebo adresáru. |
Výnosy: Slovník (mapa) obsahujúci vlastnosti metadát, ako sú veľkosť súboru, čas vytvorenia, čas poslednej úpravy a typ obsahu.
properties = notebookutils.fs.getProperties("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>")
print(properties)