Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az Azure Databricks több segédprogrammal és API-val rendelkezik a következő helyeken lévő fájlok kezeléséhez:
- Unity Catalog-kötetek
- Munkaterület fájljai
- Felhőalapú objektumtárolás
- DBFS-csatlakoztatások és DBFS-gyökér
- Rövid élettartamú tároló a fürt illesztőcsomópontjaihoz csatlakoztatva
Ez a cikk példákat tartalmaz az alábbi helyeken található fájlokkal való interakcióra az alábbi eszközökhöz:
- Apache Spark
- Spark SQL és Databricks SQL
- Databricks fájlrendszer-segédprogramok (
dbutils.fsvagy%fs) - Databricks parancssori felület
- Databricks REST API
- Bash-rendszerhéjparancsok (
%sh) - A jegyzetfüzet-hatókörű könyvtár telepítése
%pip - Pandák
- OSS Python-fájlkezelési és -feldolgozási segédprogramok
Fontos
A Databricks egyes műveletei, különösen a Java- vagy Scala-kódtárakat használó műveletek JVM-folyamatokként futnak, például:
- JAR-fájlfüggőség megadása Spark-konfigurációk használatával
--jars - Scala-jegyzetfüzetekben
catvagyjava.io.Filehívása - Egyéni adatforrások, például
spark.read.format("com.mycompany.datasource") - A fájlokat Java használatával betöltő kódtárak, mint például a
FileInputStreamvagy aPaths.get()
Ezek a műveletek nem támogatják a Unity Catalog-kötetek vagy munkaterületfájlok olvasását vagy írását szabványos fájlelérési útvonalakon, például /Volumes/my-catalog/my-schema/my-volume/my-file.csv. Ha JAR-függőségekből vagy JVM-alapú kódtárakból kell hozzáférnie a kötetfájlokhoz vagy munkaterületfájlokhoz, másolja a fájlokat először a helyi tároló pythonos vagy %sh parancsokkal történő kiszámításához, például %sh mv.. Ne használja a %fs és dbutils.fs elemeket, amelyek a JVM-et használják. A helyileg másolt fájlok eléréséhez használjon nyelvspecifikus parancsokat, például Pythont shutil vagy használjon %sh parancsokat. Ha egy fájlnak jelen kell lennie a fürt indítása során, először init szkripttel helyezze át a fájlt. Lásd Mik azok az init szkriptek?.
Meg kell adnia egy URI-sémát az adatok eléréséhez?
Az Azure Databricks adatelérési útvonalai az alábbi szabványok egyikét követik:
URI-stílusú útvonalak URI-sémát tartalmaznak. A Databricks-natív adatelérési megoldások esetében az URI-sémák a legtöbb használati esetben nem kötelezőek. Amikor közvetlenül hozzáfér az adatokhoz a felhőalapú objektumtárban, meg kell adnia a megfelelő URI-sémát a tárolási típushoz.
POSIX-stílusú elérési utak biztosítják az adathozzáférést az illesztőprogram gyökeréhez (
/). A POSIX-stílusú útvonalak soha nem igényelnek sémát. Unity Catalog-kötetekkel vagy DBFS-csatlakoztatásokkal POSIX-stílusú hozzáférést biztosíthat az adatokhoz a felhőobjektum-tárolóban. Számos ML-keretrendszer és más OSS Python-modul FUSE-t igényel, és csak POSIX-stílusú elérési utakat használhat.
Jegyzet
A FUSE-adathozzáférést igénylő fájlműveletek nem férhetnek hozzá közvetlenül a felhőalapú objektumtárolóhoz URI-k használatával. A Databricks azt javasolja, hogy Unity Catalog-kötetekkel konfigurálja a hozzáférést ezekhez a helyekhez a FUSE-hoz.
A dedikált hozzáférési móddal (korábban egyfelhasználós hozzáférési móddal) és a Databricks Runtime 14.3-as vagy újabb verzióval konfigurált számításnál a Scala támogatja a Unity Catalog-kötetekhez és munkaterületfájlokhoz készült FUSE-t, kivéve a Scala-ból származó alfolyamatokat, például a Scala parancsot "cat /Volumes/path/to/file".!!.
Fájlok használata Unity Catalog-kötetekben
A Databricks a Unity Catalog-kötetek használatát javasolja a felhőobjektum-tárolóban tárolt nem táblázatos adatfájlokhoz való hozzáférés konfigurálásához. A kötetekben lévő fájlok kezelésével kapcsolatos teljes dokumentációért, beleértve a részletes utasításokat és az ajánlott eljárásokat, olvassa el a Fájlok használata a Unity-katalógus köteteiben című témakört.
Az alábbi példák a különböző eszközökkel és felületekkel végzett gyakori műveleteket mutatják be:
| Eszköz | Példa |
|---|---|
| Apache Spark | spark.read.format("json").load("/Volumes/my_catalog/my_schema/my_volume/data.json").show() |
| Spark SQL és Databricks SQL | SELECT * FROM csv.`/Volumes/my_catalog/my_schema/my_volume/data.csv`;LIST '/Volumes/my_catalog/my_schema/my_volume/'; |
| Databricks fájlrendszer-segédprogramok | dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/")%fs ls /Volumes/my_catalog/my_schema/my_volume/ |
| Databricks parancssori felület | databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/ |
| Databricks REST API | POST https://<databricks-instance>/api/2.1/jobs/create{"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]} |
| Bash-rendszerhéj-parancsok | %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip |
| Könyvtár telepítése | %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl |
| Pandas | df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv') |
| Nyílt forráskódú Python | os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory') |
A kötetekre vonatkozó korlátozásokról és kerülő megoldásokról további információt a kötetekben lévő fájlok használatának korlátozásai című témakörben talál.
Munkaterületfájlok kezelése
A Databricks munkaterület fájljai a munkaterületen lévő fájlok, amelyeket a munkaterület tárfiókjábantárolnak. A munkaterület fájljaival olyan fájlokat tárolhat és érhet el, mint a jegyzetfüzetek, a forráskódfájlok, az adatfájlok és más munkaterületi objektumok.
Fontos
Mivel a munkaterület fájljai méretkorlátozásokkal rendelkeznek, a Databricks csak kis adatfájlok tárolását javasolja itt elsősorban fejlesztés és tesztelés céljából. További fájltípusok tárolására vonatkozó javaslatokért tekintse meg a Fájltípusok című témakört.
| Eszköz | Példa |
|---|---|
| Apache Spark | spark.read.format("json").load("file:/Workspace/Users/<user-folder>/data.json").show() |
| Spark SQL és Databricks SQL | SELECT * FROM json.`file:/Workspace/Users/<user-folder>/file.json`; |
| Databricks fájlrendszer-segédprogramok | dbutils.fs.ls("file:/Workspace/Users/<user-folder>/")%fs ls file:/Workspace/Users/<user-folder>/ |
| Databricks parancssori felület | databricks workspace list |
| Databricks REST API | POST https://<databricks-instance>/api/2.0/workspace/delete{"path": "/Workspace/Shared/code.py", "recursive": "false"} |
| Bash-rendszerhéj-parancsok | %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip |
| Könyvtár telepítése | %pip install /Workspace/Users/<user-folder>/my_library.whl |
| Pandas | df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv') |
| Nyílt forráskódú Python | os.listdir('/Workspace/Users/<user-folder>/path/to/directory') |
Jegyzet
A file:/ séma szükséges a Databricks Utilities, az Apache Spark vagy az SQL használatakor.
Azokban a munkaterületeken, ahol a DBFS-gyökérkönyvtár és a csatolások le vannak tiltva, a Databricks segédprogramokkal is dbfs:/Workspace elérheti a munkaterület fájljait. Ehhez a Databricks Runtime 13.3 LTS vagy újabb verziója szükséges. Lásd DBFS-gyökér és a csatolmányok letiltása a meglévő Azure Databricks-munkaterületen.
A munkaterületfájlok használatának korlátozásait a Korlátozásokcímű témakörben talál.
Hová kerülnek a törölt munkaterületfájlok?
A munkaterületfájl törlése a kukába küldi. A felhasználói felületen helyreállíthatja vagy véglegesen törölheti a fájlokat a kukából.
Lásd: Objektum törlése.
Fájlok használata a felhőobjektum-tárolóban
A Databricks a Unity Catalog-kötetek használatát javasolja a felhőobjektum-tárolóban lévő fájlok biztonságos hozzáférésének konfigurálásához. Engedélyeket kell konfigurálnia, ha úgy dönt, hogy az adatokat közvetlenül a felhőobjektum-tárolóban URI-k használatával éri el. Lásd : Felügyelt és külső kötetek.
Az alábbi példák URI-kat használnak az adatok felhőbeli objektumtárolóban való eléréséhez:
| Eszköz | Példa |
|---|---|
| Apache Spark | spark.read.format("json").load("abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json").show() |
| Spark SQL és Databricks SQL |
SELECT * FROM csv.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json`;
LIST 'abfss://container-name@storage-account-name.dfs.core.windows.net/path';
|
| Databricks fájlrendszer-segédprogramok |
dbutils.fs.ls("abfss://container-name@storage-account-name.dfs.core.windows.net/path/")
%fs ls abfss://container-name@storage-account-name.dfs.core.windows.net/path/
|
| Databricks parancssori felület | Nem támogatott |
| Databricks REST API | Nem támogatott |
| Bash-rendszerhéj-parancsok | Nem támogatott |
| Könyvtár telepítése | %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl |
| Pandas | Nem támogatott |
| Nyílt forráskódú Python | Nem támogatott |
Fájlokkal végzett munka DBFS-csatlakoztatásokban és DBFS-gyökérben
Fontos
A DBFS gyökér és a DBFS-csatlakoztatások elavultak, és a Databricks nem ajánlja őket. Az új fiókokat úgy hozzák létre, hogy nincs hozzáférés ezekhez a funkciókhoz. A Databricks inkább Unity Catalog-kötetek, külső helyek vagy munkaterületfájlok használatát javasolja.
| Eszköz | Példa |
|---|---|
| Apache Spark | spark.read.format("json").load("/mnt/path/to/data.json").show() |
| Spark SQL és Databricks SQL | SELECT * FROM json.`/mnt/path/to/data.json`; |
| Databricks fájlrendszer-segédprogramok | dbutils.fs.ls("/mnt/path")%fs ls /mnt/path |
| Databricks parancssori felület | databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file |
| Databricks REST API | POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }' |
| Bash-rendszerhéj-parancsok | %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip |
| Könyvtár telepítése | %pip install /dbfs/mnt/path/to/my_library.whl |
| Pandas | df = pd.read_csv('/dbfs/mnt/path/to/data.csv') |
| Nyílt forráskódú Python | os.listdir('/dbfs/mnt/path/to/directory') |
Jegyzet
A dbfs:/ séma szükséges a Databricks parancssori felületének használatakor.
Az illesztőprogram-csomóponthoz csatolt rövid élettartamú tárolóban lévő fájlok használata
Az illesztőprogram csomóponthoz csatlakoztatott ideiglenes tároló egy blokktároló, amely beépített, POSIX-alapú elérésiút-hozzáféréssel rendelkezik. Az adatok, amelyeket ezen a helyen tárolnak, eltűnnek, amikor egy fürt leáll vagy újraindul.
| Eszköz | Példa |
|---|---|
| Apache Spark | Nem támogatott |
| Spark SQL és Databricks SQL | Nem támogatott |
| Databricks fájlrendszer-segédprogramok | dbutils.fs.ls("file:/path")%fs ls file:/path |
| Databricks parancssori felület | Nem támogatott |
| Databricks REST API | Nem támogatott |
| Bash-rendszerhéj-parancsok | %sh curl http://<address>/text.zip > /tmp/text.zip |
| Könyvtár telepítése | Nem támogatott |
| Pandas | df = pd.read_csv('/path/to/data.csv') |
| Nyílt forráskódú Python | os.listdir('/path/to/directory') |
Jegyzet
A Databricks Utilities használatakor a file:/ séma szükséges.
Adatok áthelyezése rövid élettartamú tárolóból kötetekbe
Előfordulhat, hogy az Apache Spark használatával szeretné elérni a letöltött vagy a rövid élettartamú tárolóba mentett adatokat. Mivel a rövid élettartamú tároló az illesztőprogramhoz van csatolva, és a Spark egy elosztott feldolgozó motor, nem minden művelet tud közvetlenül hozzáférni az adatokhoz. Tegyük fel, hogy át kell helyeznie az adatokat az illesztőprogram fájlrendszeréből a Unity Catalog-kötetekbe. Ebben az esetben mágikus parancsok vagy a Databricks segédprogramokhasználatával másolhat fájlokat, ahogyan az alábbi példákban is látható:
dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>
További erőforrások
További információ a helyi fájlok feltöltéséről vagy internetes fájlok Azure Databricksbe való letöltéséről: Fájlok feltöltése az Azure Databricksbe.