FileType

A következőre vonatkozik:ellenőrizze akövetkezőt: yes 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ént MapType .
  • 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 MANAGED deklarációt, FILE EXTERNAL a 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ámogat FILE, mint FileType, UDF-ekben és fájlolvasókban.
  • as_local_file() és open() 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 egy FILE MANAGED rovatba ír, nem támogatott.