FileType

S’applique à :check marqué oui 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 StructType ou un ArrayType.
  • Comme le type de valeur d’un MapType, mais pas comme une MapType clé.
  • À 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 MANAGED déclaration ni FILE EXTERNAL les colonnes de tables, ni l’ingestion massive de fichiers. Utilisez SQL pour ces opérations. PySpark ne prend en charge FILEque , comme FileType, dans les UDF et les lectures de fichiers.
  • as_local_file() et open() 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_bytes et from_local_file, les UDF Python déduisent content_type à partir de l'extension de chemin, tandis que les UDF Scala l'inférent à partir des octets magiques du fichier.
  • Retourner un a FileRef d’un UDF qui écrit sur une FILE MANAGED colonne n’est pas pris en charge.