Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks Runtime 18 LTS et versions ultérieures
Important
Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.
FileType est le type PySpark pour le type SQL FILE , une référence à un fichier non structuré et à ses métadonnées. Utilisez-le pour déclarer FILE des paramètres et des types de retour dans des fonctions définies par l’utilisateur (UDFs) Python. En Python, une FILE valeur est un FileRef objet qui contient les métadonnées du fichier et lit ses octets.
Pour la référence de type SQL et la vue d’ensemble conceptuelle, voir FILE type , type FICHIER et données non structurées. Pour des exemples de UDF en traitement de fichiers, voir Fichiers de processus avec UDF.
Remarque
Ce FILE type n’est pas pris en charge sur les portables serverless. Il est pris en charge sur les notebooks connectés aux entrepôts SQL Databricks serverless.
Import
from pyspark.sql.types import FileType, FileRef
FileType
FileType est une sous-classe de pyspark.sql.types.DataType. Utilisez-le comme paramètre ou type de retour d’une UDF, ou comme type de champ dans un schéma.
FileType ne précise MANAGED pas ni EXTERNAL. Ces qualificatifs ne s’appliquent qu’à une FILE colonne de tableau, où la colonne détermine si une référence est stockée comme gestionnaire ou externe. Un UDF transmet et retourne FILE des références, et la colonne cible décide comment chaque référence est stockée lorsque vous écrivez le résultat dans une table.
Vous pouvez utiliser FileType les méthodes suivantes, qui s’appliquent également aux UDF SQL et Scala ainsi qu’aux procédures stockées SQL :
- En tant que type de haut niveau.
- Imbriqué à l’intérieur d’un
StructTypeou unArrayType. - Comme le type de valeur d’un
MapType, mais pas comme uneMapTypeclé. - À l’intérieur d’un
VariantType, mais uniquement pour des fichiers externes.
Lorsqu’une requête renvoie une FILE colonne en Python, soit à l’intérieur d’un UDF, soit via DataFrame.collect(), chaque valeur est un FileRef.
Réf. de fichier
A FileRef est la valeur Python pour un FILE. Il contient les métadonnées du fichier et dispose de méthodes pour lire les octets du fichier et créer de nouvelles références.
Attributs
| Caractéristique | Type | Description |
|---|---|---|
uri |
str |
L’URI du fichier. Toujours prêt. |
offset |
int |
Un décalage dans le fichier, en octets. |
size |
int |
Taille du fichier en octets. |
content_type |
str |
Le type MIME du fichier, quand il est connu. |
checksum |
str |
Un jeton d’intégrité pour les octets du fichier, de la forme <algorithm>:<digest>. Pour les algorithmes reconnus, voir Sommes de contrôle. |
Méthodes
| Méthode | Description |
|---|---|
as_local_file() |
Ça revient pathlib.Path au fichier. Transmets le résultat à toute bibliothèque qui accepte un chemin. Disponible sur Azure Databricks Compute (notebooks et UDF workers). Non disponible sur un client Databricks Connect, comme un IDE ou une application locale qui exécute votre code en dehors du calcul Azure Databricks. |
open() |
Ouvre le fichier pour la lecture binaire et renvoie un objet fichier. L’appelant ferme la porte. A la même exigence de calcul que as_local_file(). |
from_bytes(content, path=None, content_type=None) |
Méthode de classe. Uploade content (une bytes valeur) dans le chemin du volume du catalogue Unity donné par path et retourne un FileReffichier . Échoue si un fichier existe déjà sur le chemin cible. Pris en charge uniquement à l’intérieur d’un UDF. |
from_local_file(local_file, path=None, content_type=None) |
Méthode de classe. Téléverse un fichier local sur un volume du catalogue Unity et renvoie un FileReffichier . Les path paramètres et content_type se comportent comme dans from_bytes. Pris en charge uniquement à l’intérieur d’un UDF. |
Example
Dans le code suivant, une UDF scalaire reçoit une FILE valeur comme FileRef, ouvre l’image, et retourne ses dimensions :
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()
Pour plus d’exemples de UDF en traitement de fichiers, y compris la génération de fichiers avec un UDTF, voir Traiter les fichiers avec UDF. Pour la création générale de UDF, voir Python les fonctions scalaires définies par l’utilisateur (UDF) et les fonctions de table définies par l’utilisateur Python (UDTF).
Limitations
L’utilisation FileType dans PySpark présente les limitations suivantes :
- PySpark ne supporte pas la
FILE MANAGEDdéclaration niFILE EXTERNALles colonnes de tables, ni l’ingestion massive de fichiers. Utilisez SQL pour ces opérations. PySpark ne prend en chargeFILEque , commeFileType, dans les UDF et les lectures de fichiers. -
as_local_file()etopen()nécessitent un accès côté cluster, ils ne sont donc pas disponibles sur un client Databricks Connect . Appelle-les plutôt dans un UDF ou en cluster computing. - Pour
from_bytesetfrom_local_file, les UDF Python déduisentcontent_typeà partir de l'extension de chemin, tandis que les UDF Scala l'inférent à partir des octets magiques du fichier. - Retourner un a
FileRefd’un UDF qui écrit sur uneFILE MANAGEDcolonne n’est pas pris en charge.