Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:ellenőrizze a
Databricks Runtime 18 LTS és újabb
Important
Ez a funkció bétaverzióban érhető el. A munkaterület rendszergazdái az Előnézetek lapon szabályozhatják a funkcióhoz való hozzáférést. Lásd: Az Azure Databricks előzetes verziójának kezelése.
FileType az SQL FILE típus PySpark típusa, amely egy strukturálatlan fájlra és annak metaadataira utal. Használd paraméterek deklarálására FILE és a típusok visszaküldésére a Python felhasználó-definiált függvényekben (UDF-ekben). Python-ban az FILE érték egy FileRef objektum, amely a fájl metaadatait tartalmazza és felolvassa annak bájtjait.
Az SQL típusreferencia és koncepcionális áttekintés esetén lásd: FILE típus és FILE típus, valamint strukturálatlan adatok. Fájlfeldolgozási UDF példákért lásd: Folyamatfájlok UDF-ekkel.
Jegyzet
Ez a FILE típus szerver nélküli notebookokon nem támogatott. Támogatott olyan notebookokon is, amelyek szerver nélküli Databricks SQL raktárakhoz csatlakoznak.
Import
from pyspark.sql.types import FileType, FileRef
FileType
FileType egy pyspark.sql.types.DataType alosztálya. Használd UDF paraméter- vagy visszaküldési típusaként, vagy egy séma mezőtípusaként.
FileType Nem részletezi MANAGED az vagy EXTERNAL. Ezek a kvalifikátorok csak egy FILE táblázatoszlopra vonatkoznak, ahol az oszlop határozza meg, hogy egy hivatkozás kezelt vagy külső állapotban van-e tárolva. Az UDF továbbítja és visszaadja FILE a hivatkozásokat, és a céloszlop dönti el, hogyan tárolják az egyes hivatkozásokat, amikor az eredményt egy táblázatba írjuk.
A következő módokon használhatod FileType , amelyek SQL és Scala UDF-ekre, valamint SQL tárolt eljárásokra is érvényesek:
- Mint felső szintű típus.
- Egy vagy
StructTypeegy .ArrayType - Mint az
MapTypeértéktípus, de nem kulcskéntMapType. - Egy , de
VariantTypecsak külső fájloknál.
Amikor egy lekérdezés egy FILE oszlopot ad vissza a Python-ba, akár egy UDF-en belül, akár azon keresztülDataFrame.collect(), minden érték egy FileRef.
FileRef
A FileRef a Python értéke egy FILE. Tartalmazza a fájl metaadatait, és tartalmaz módszereket a fájl bájtjai olvasására, valamint új hivatkozások létrehozására.
Attribútumok
| Attribute | Típus | Description |
|---|---|---|
uri |
str |
A fájl URI-je. Mindig kész. |
offset |
int |
Egy elmozdulás a fájlba, bájtokban. |
size |
int |
A fájl mérete bájtban. |
content_type |
str |
A fájl MIME típusa, ha ismert. |
checksum |
str |
Egy integritási token a fájl bájtjaira, az alábbi formában <algorithm>:<digest>. Az elismert algoritmusokról lásd: Ellenzőösszegek. |
Methods
| Módszer | Description |
|---|---|
as_local_file() |
Visszaadja az a-t pathlib.Path a fájlba. Add át az eredményt bármely könyvtárnak, amely elfogad egy útvonalat. Available on Azure Databricks compute (notebooks and UDF workers). Nem elérhető Databricks Connect kliensben, például IDE-ben vagy helyi alkalmazásban, amely az Azure Databricks számítási rendszerén kívül futtatja a kódot. |
open() |
Megnyitja a fájlt bináris olvasásra, és visszaad egy fájlobjektumot. A hívó bezárja. Ugyanaz a számítási követelmény, mint as_local_file(). |
from_bytes(content, path=None, content_type=None) |
Osztálymódszer. Feltölt content (egy bytes értéket) a Unity Catalog kötetútjára, amelyet és path egy -t ad.FileRef Sikertelen, ha a célúton már létezik fájl. Csak UDF-en belül támogatom. |
from_local_file(local_file, path=None, content_type=None) |
Osztálymódszer. Feltölt egy helyi fájlt egy Unity Catalog kötetre, és visszaadja a FileRef. Az path és content_type paraméterek úgy viselkednek, mint .from_bytes Csak UDF-en belül támogatom. |
Example
A következő kódban egy skaláris UDF kap egy FILE értéket, mint a FileRef, megnyitja a képet, és visszaadja a dimenzióit:
from pyspark.sql.functions import col, udf
from pyspark.sql.types import StringType
from PIL import Image
@udf(returnType=StringType())
def image_resolution(file):
with Image.open(file.as_local_file()) as img:
return f"{img.width}x{img.height}"
spark.read.table("images").select(image_resolution(col("photo"))).display()
További fájlfeldolgozási UDF példákért, beleértve a fájlok generálását UDTF-vel, lásd: Processzfájlok UDF-ekkel. Az általános UDF szerzőségért lásd a Python skaláris felhasználó-definiált függvényeket (UDF-eket) és a Python felhasználó-definiált táblafüggvényeket (UDTF-eket).
Limitations
A PySparkban való használatnak FileType a következő korlátai vannak:
- A PySpark nem támogatja a
FILE MANAGEDdeklarációt,FILE EXTERNALa tábla oszlopokat, vagy a fájlok tömeges feltöltését. Használj SQL-t ezekhez a műveletekhez. A PySpark csak támogatFILE, mintFileType, UDF-ekben és fájlolvasókban. -
as_local_file()ésopen()klaszteroldali hozzáférést igényelnek, így nem elérhetők Databricks Connect kliensen. Hívd őket inkább UDF-ben vagy klaszterszámításon. - És
from_bytesfrom_local_fileesetén a Python UDF-ek az útkiterjesztésből következtetnekcontent_type, míg a Scala UDF-ek a fájl varázsbájtjaiból következtetik. - Az UDF-től való visszatérés
FileRef, amely egyFILE MANAGEDrovatba ír, nem támogatott.