Fájlokkal való munka az Azure Databricks rendszerben
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őobjektum-tároló
- 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.fs
vagy%fs
) - A Databricks parancssori felülete
- A Databricks REST API-ja
- Bash-rendszerhéjparancsok (
%sh
) - Jegyzetfüzet-hatókörű kódtár telepítése a következő használatával:
%pip
- pandas
- OSS Python-fájlkezelési és -feldolgozási segédprogramok
Fontos
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 Scala támogatja a Unity Catalog-kötetekhez és munkaterület-fájlokhoz készült FUSE-t a Unity Catalogtal és a megosztott hozzáférési móddal konfigurált számítási feladatokhoz. Az 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ás esetében a Scala támogatja a Unity-katalógus köteteihez és munkaterületfájljaihoz készült FUSE-t, kivéve a Scalából származó alfolyamatokat, például a Scala parancsot "cat /Volumes/path/to/file".!!
.
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:
Az 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.
A POSIX-stílusú elérési utak adathozzáférést biztosítanak 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.
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. Lásd: Mik azok a Unity Catalog-kötetek?.
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/ |
A Databricks parancssori felülete | databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/ |
A Databricks REST API-ja | 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ódtár telepítése | %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl |
Pandák | df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv') |
OSS Python | os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory') |
Feljegyzés
A dbfs:/
séma a Databricks parancssori felületének használatakor szükséges.
Mennyiségi korlátozások
A kötetekre a következő korlátozások vonatkoznak:
A közvetlen hozzáfűzés vagy a nem szekvenciális (véletlenszerű) írások, például Zip- és Excel-fájlok írása nem támogatott. Közvetlen hozzáfűzési vagy véletlenszerű írási számítási feladatok esetén először végezze el a műveleteket egy helyi lemezen, majd másolja az eredményeket a Unity Catalog-kötetekbe. Példa:
# python import xlsxwriter from shutil import copyfile workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx') worksheet = workbook.add_worksheet() worksheet.write(0, 0, "Key") worksheet.write(0, 1, "Value") workbook.close() copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
A ritka fájlok nem támogatottak. Ritka fájlok másolásához használja a következőt
cp --sparse=never
:$ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file error writing '/dbfs/sparse.file': Operation not supported $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
Munkaterületfájlok kezelése
A Databricks-munkaterület fájljai olyan munkaterület fájljai, amelyek nem jegyzetfüzetek. A munkaterület fájljaival a jegyzetfüzetek és más munkaterületi objektumok mellett mentett adatokat és egyéb fájlokat tárolhatja és érheti el. 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.
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>/ |
A Databricks parancssori felülete | databricks workspace list |
A Databricks REST API-ja | 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ódtár telepítése | %pip install /Workspace/Users/<user-folder>/my_library.whl |
Pandák | df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv') |
OSS Python | os.listdir('/Workspace/Users/<user-folder>/path/to/directory') |
Feljegyzés
A file:/
séma a Databricks Utilities, az Apache Spark vagy az SQL használatakor szükséges.
A munkaterületfájlok használatának korlátozásait a Korlátozások cí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 a felhőalapú objektumtárban lévő adatokat közvetlenül URI-k használatával éri el. Lásd: Külső helyek, külső táblák és külső kötetek kezelése.
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/ |
A Databricks parancssori felülete | Nem támogatott |
A Databricks REST API-ja | Nem támogatott |
Bash-rendszerhéj-parancsok | Nem támogatott |
Kódtár telepítése | %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl |
Pandák | Nem támogatott |
OSS Python | Nem támogatott |
Feljegyzés
A felhőalapú objektumtárolás nem támogatja a hitelesítő adatok átadását.
Fájlokkal végzett munka DBFS-csatlakoztatásokban és DBFS-gyökérben
A DBFS-csatlakoztatások nem biztonságosak a Unity Catalog használatával, és a Databricks már nem ajánlott. A DBFS-gyökérben tárolt adatok a munkaterület összes felhasználója számára elérhetők. A Databricks azt javasolja, hogy ne tároljon bizalmas vagy éles kódot vagy adatokat a DBFS-gyökérben. Lásd: Mi az a DBFS?.
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 |
A Databricks parancssori felülete | databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file |
A Databricks REST API-ja | 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ódtár telepítése | %pip install /dbfs/mnt/path/to/my_library.whl |
Pandák | df = pd.read_csv('/dbfs/mnt/path/to/data.csv') |
OSS Python | os.listdir('/dbfs/mnt/path/to/directory') |
Feljegyzés
A dbfs:/
séma a Databricks parancssori felületének használatakor szükséges.
Az illesztőprogram-csomóponthoz csatolt rövid élettartamú tárolóban lévő fájlok használata
Az illesztőprogram-csomóponthoz csatlakoztatott rövid élettartamú tároló a beépített POSIX-alapú elérésiút-hozzáféréssel rendelkező blokktároló. Az ezen a helyen tárolt adatok 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 |
A Databricks parancssori felülete | Nem támogatott |
A Databricks REST API-ja | Nem támogatott |
Bash-rendszerhéj-parancsok | %sh curl http://<address>/text.zip > /tmp/text.zip |
Kódtár telepítése | Nem támogatott |
Pandák | df = pd.read_csv('/path/to/data.csv') |
OSS Python | os.listdir('/path/to/directory') |
Feljegyzés
A file:/
séma a Databricks Utilities használatakor 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 varázsparancsokkal vagy a Databricks segédprogramokkal 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
A helyi fájlok feltöltéséről vagy internetes fájlok Azure Databricksbe való letöltéséről további információt a Fájlok feltöltése az Azure Databricksbe című témakörben talál.