Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks Runtime 18 LTS och senare
Important
Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.
FileType är PySpark-typen för SQL-typen FILE , en referens till en ostrukturerad fil och dess metadata. Använd den för att deklarera FILE parametrar och returnera typer i Python-användardefinierade funktioner (UDF). I Python är ett FILE värde ett FileRef objekt som innehåller filens metadata och läser dess bytes.
För SQL-typreferens och konceptuell översikt, se FILE typ och FIL-typ samt ostrukturerad data. För exempel på filbehandling av UDF, se Process files with UDF.
Anmärkning
Typen FILE stöds inte på serverlösa anteckningsböcker. Det stöds på anteckningsböcker kopplade till serverlösa Databricks SQL-lager.
Import
from pyspark.sql.types import FileType, FileRef
FileType
FileType är en underklass av pyspark.sql.types.DataType. Använd det som parameter- eller returtyp för en UDF, eller som fälttyp i ett schema.
FileType specificerar MANAGED inte eller EXTERNAL. Dessa kvalificeringar gäller endast för en FILE tabellkolumn, där kolumnen avgör om en referens lagras som hanterad eller extern. En UDF skickar och returnerar FILE referenser, och målkolumnen avgör hur varje referens lagras när du skriver resultatet till en tabell.
Du kan använda FileType på följande sätt, vilka även gäller för SQL och Scala UDF samt för SQL-lagrade procedurer:
- Som en toppnivå-typ.
- Inbäddad i en
StructTypeeller enArrayType. - Som värdetyp av en
MapType, men inte som enMapTypenyckel. - Inuti en
VariantType, men bara för externa filer.
När en fråga returnerar en FILE kolumn till Python, antingen inuti en UDF eller genom DataFrame.collect(), är varje värde ett FileRef.
FileRef
A FileRef är Python-värdet för en FILE. Den innehåller filens metadata och har metoder för att läsa filens byte och skapa nya referenser.
Attribut
| Attribute | Type | Description |
|---|---|---|
uri |
str |
URI:n för filen. Alltid inställt. |
offset |
int |
En offset in i filen, i bytes. |
size |
int |
Storleken på filen i byte. |
content_type |
str |
MIME-typen på filen, när den är känd. |
checksum |
str |
En integritetstoken för filens bytes, av formen <algorithm>:<digest>. För de erkända algoritmerna, se Checksums. |
Methods
| Metod | Description |
|---|---|
as_local_file() |
Återvänder till pathlib.Path filen. Skicka resultatet till vilket bibliotek som helst som accepterar en väg. Tillgänglig på Azure Databricks compute (notebooks och UDF-arbetare). Inte tillgängligt på en Databricks Connect-klient, såsom en IDE eller lokal applikation som kör din kod utanför Azure Databricks beräkning. |
open() |
Öppnar filen för binärläsning och returnerar ett filobjekt. Uppringaren stänger den. Har samma beräkningskrav som as_local_file(). |
from_bytes(content, path=None, content_type=None) |
Klassmetod. Laddar upp (ett bytes värde) till Unity Catalog-volymvägen content given av path och returnerar en FileRef. Misslyckas om en fil redan finns på målsökvägen. Stöds endast i en UDF. |
from_local_file(local_file, path=None, content_type=None) |
Klassmetod. Laddar upp en lokal fil till en Unity Catalog-volym och returnerar en FileRef. Och-parametrarna pathcontent_type beter sig som i from_bytes. Stöds endast i en UDF. |
Example
I följande kod får en skalär UDF ett FILE värde som , FileReföppnar bilden och returnerar sina dimensioner:
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()
För fler exempel på filbehandling av UDF, inklusive att generera filer med en UDTF, se Process files with UDF. För allmän UDF-författande, se Python skalar användardefinierade funktioner (UDF) och Python användardefinierade tabellfunktioner (UDTF).
Limitations
Att använda FileType i PySpark har följande begränsningar:
- PySpark stöder inte deklaration
FILE MANAGEDellerFILE EXTERNALtabellkolumner eller att ta in filer i bulk. Använd SQL för dessa operationer. PySpark stöderFILEendast , somFileType, i UDF:er och filläsningar. -
as_local_file()ochopen()kräver klusteråtkomst, så de är inte tillgängliga på en Databricks Connect-klient . Kalla dem istället i en UDF eller på klusterberäkning. - För
from_bytesochfrom_local_file, härledercontent_typePython UDF från path extension, medan Scala UDF härleder det från filens magic bytes. - Att returnera a
FileReffrån en UDF som skriver till enFILE MANAGEDkolumn stöds inte.