Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks Runtime 18 LTS e versioni successive
Importante
Questa funzionalità è in versione beta. Gli amministratori dell'area di lavoro possono controllare l'accesso a questa funzionalità dalla pagina Anteprime . Vedere Gestire le anteprime di Azure Databricks.
FileType è il tipo PySpark per il tipo SQL FILE , un riferimento a un file non strutturato e ai suoi metadati. Usalo per dichiarare FILE parametri e tipi di ritorno nelle funzioni definite dall'utente (UDF) in Python. In Python, un FILE valore è un FileRef oggetto che contiene i metadati del file e ne legge i byte.
Per il riferimento al tipo SQL e la panoramica concettuale, vedi FILE type e FILE type e dati non strutturati. Per esempi di UDF per l'elaborazione file, vedi File di processo con UDF.
Nota
Questo FILE tipo non è supportato sui notebook serverless. È supportata su notebook collegati a serverless Databricks SQL warehouse.
Import
from pyspark.sql.types import FileType, FileRef
Tipo di file
FileType è una sottoclasse di pyspark.sql.types.DataType. Usalo come parametro o tipo di ritorno di una UDF, o come tipo di campo in uno schema.
FileType non specifica MANAGED né EXTERNAL. Questi qualificatori si applicano solo a una FILE colonna della tabella, dove la colonna determina se un riferimento è memorizzato come gestito o esterno. Un UDF passa e restituisce FILE riferimenti, e la colonna di destinazione decide come ogni riferimento viene memorizzato quando scrivi il risultato su una tabella.
Puoi utilizzare FileType i seguenti modi, che si applicano anche a SQL e Scala UDF e alle stored procedure SQL:
- Come tipo di alto livello.
- Annidati all'interno di un
StructTypeo unArrayType. - Come valore di tipo ,
MapTypema non comeMapTypechiave. - All'interno di un
VariantType, ma solo per file esterni.
Quando una query restituisce una FILE colonna in Python, sia all'interno di un UDF che attraverso DataFrame.collect(), ogni valore è un FileRef.
FileRef
A FileRef è il valore Python per un FILE. Contiene i metadati del file e dispone di metodi per leggere i byte del file e creare nuovi riferimenti.
Attributi
| Attribute | Type | Description |
|---|---|---|
uri |
str |
L'URI del file. Sempre pronto. |
offset |
int |
Un offset nel file, in byte. |
size |
int |
Le dimensioni del file in byte. |
content_type |
str |
Il tipo MIME del file, quando noto. |
checksum |
str |
Un token di integrità per i byte del file, della forma <algorithm>:<digest>. Per gli algoritmi riconosciuti, vedi Checksum. |
Methods
| metodo | Description |
|---|---|
as_local_file() |
Ritorna pathlib.Path al file. Passa il risultato a qualsiasi libreria che accetti un percorso. Disponibile su Azure Databricks compute (notebooks e UDF workers). Non disponibile su un client Databricks Connect, come un IDE o un'applicazione locale che esegue il tuo codice al di fuori di Azure Databricks. |
open() |
Apre il file per la lettura binaria e restituisce un oggetto file. Il chiamante chiude la telefonata. Ha lo stesso requisito di calcolo di as_local_file(). |
from_bytes(content, path=None, content_type=None) |
Metodo di classe. Carica content (un bytes valore) nel percorso del volume del Catalogo Unity dato da path e restituisce un FileRef. Fallisce se un file esiste già sul percorso di destinazione. Supportato solo all'interno di un UDF. |
from_local_file(local_file, path=None, content_type=None) |
Metodo di classe. Carica un file locale in un volume del Catalogo Unity e restituisce un FileReffile . I path parametri e content_type si comportano come in from_bytes. Supportato solo all'interno di un UDF. |
Example
Nel codice seguente, un UDF scalare riceve un FILE valore come FileRef, apre l'immagine e restituisce le sue dimensioni:
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()
Per altri esempi di UDF di elaborazione file, inclusa la generazione di file con un UDTF, vedi File di elaborazione con UDF. Per la creazione generale di UDF, vedi Python funzioni scalari definite dall'utente (UDF) e funzioni di tabella definite dall'utente in Python (UDTF).
Limitazioni
L'utilizzo FileType in PySpark presenta le seguenti limitazioni:
- PySpark non supporta dichiarazioni
FILE MANAGEDoFILE EXTERNALcolonne di tabella o l'ingestimento di file in massa. Usa SQL per queste operazioni. PySpark supportaFILEsolo , comeFileType, in UDF e letture di file. -
as_local_file()eopen()richiedono l'accesso lato cluster, quindi non sono disponibili su un client Databricks Connect . Chiamali invece in un UDF o su un cluster compute. - Per
from_bytesefrom_local_file, le UDF di Python inferisconocontent_typedall'estensione di percorso, mentre le UDF di Scala lo infergono dai magic byte del file. - Non è supportato restituire a
FileRefda un UDF che scrive in unaFILE MANAGEDcolonna.