FileType

Aplica-se a:check marked yes Databricks Runtime 18 LTS e superior

Importante

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

FileType é o tipo PySpark para o tipo SQL FILE , uma referência a um arquivo não estruturado e seus metadados. Use-o para declarar FILE parâmetros e tipos de retorno em funções definidas pelo usuário (UDFs) em Python. Em Python, um FILE valor é um FileRef objeto, que armazena os metadados do arquivo e lê seus bytes.

Para a referência de tipo SQL e visão geral conceitual, vejaFILE tipo e tipo FILE e dados não estruturados. Para exemplos de UDF em processamento de arquivos, veja Arquivos de processo com UDFs.

Observação

Esse FILE tipo não é suportado em notebooks serverless. É suportado em notebooks conectados a armazenados SQL serverless Databricks.

Import

from pyspark.sql.types import FileType, FileRef

FileType

O FileType é uma subclasse de pyspark.sql.types.DataType. Use-o como parâmetro ou tipo de retorno de um UDF, ou como tipo de campo em um esquema.

FileType não especifica MANAGED nem EXTERNAL. Esses qualificadores se aplicam apenas a uma FILE coluna de tabela, onde a coluna determina se uma referência é armazenada como gerenciada ou externa. Um UDF passa e retorna FILE referências, e a coluna de destino decide como cada referência é armazenada quando você escreve o resultado em uma tabela.

Você pode usar FileType das seguintes formas, que também se aplicam a UDFs SQL e Scala e a procedimentos armazenados SQL:

  • Como um tipo de alto nível.
  • Aninhado dentro de um StructType ou um ArrayType.
  • Como o tipo de valor de um MapType, mas não como uma MapType chave.
  • Dentro de um VariantType, mas apenas para arquivos externos.

Quando uma consulta retorna uma FILE coluna para Python, seja dentro de um UDF ou através DataFrame.collect()de , cada valor é um FileRef.

FileRef

A FileRef é o valor em Python para um FILE. Ele armazena os metadados do arquivo e possui métodos para ler os bytes do arquivo e criar novas referências.

Attributes

Attribute Tipo Description
uri str O URI do arquivo. Sempre pronto.
offset int Um deslocamento para dentro do arquivo, em bytes.
size int O tamanho do arquivo em bytes.
content_type str O tipo MIME do arquivo, quando conhecido.
checksum str Um token de integridade para os bytes do arquivo, da forma <algorithm>:<digest>. Para os algoritmos reconhecidos, veja Checksums.

Methods

Método Description
as_local_file() Retorna a pathlib.Path ao arquivo. Passe o resultado para qualquer biblioteca que aceite um caminho. Disponível no Azure Databricks compute (notebooks e trabalhadores UDF). Não disponível em um cliente Databricks Connect, como um IDE ou aplicativo local que executa seu código fora do computo do Azure Databricks.
open() Abre o arquivo para leitura binária e retorna um objeto de arquivo. O interlocutor fecha. Tem o mesmo requisito de computação que as_local_file().
from_bytes(content, path=None, content_type=None) Método de classe. Faz upload content (um bytes valor) para o caminho do volume do Unity Catalog dado por path e retorna um FileRef. Falha se um arquivo já existir no caminho de destino. Suportado apenas dentro de um UDF.
from_local_file(local_file, path=None, content_type=None) Método de classe. Faz upload de um arquivo local para um volume do Unity Catalog e retorna um FileRefarquivo . Os path parâmetros e content_type se comportam como em from_bytes. Suportado apenas dentro de um UDF.

Example

No código a seguir, um UDF escalar recebe um FILE valor como FileRef, abre a imagem e retorna suas dimensões:

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()

Para mais exemplos de UDF em processamento de arquivos, incluindo geração de arquivos com um UDTF, veja Processar arquivos com UDFs. Para a autoria geral de UDF, veja funções definidas pelo usuário (UDFs) em Python e funções de tabela definidas pelo usuário em Python (UDTFs).

Limitations

O uso FileType do PySpark tem as seguintes limitações:

  • O PySpark não suporta declarações FILE MANAGED , FILE EXTERNAL colunas de tabela ou ingesta de arquivos em massa. Use SQL para essas operações. O PySpark só suporta FILE, como FileType, em UDFs e leituras de arquivos.
  • as_local_file() e open() exigem acesso do lado do cluster, então não estão disponíveis em um cliente Databricks Connect . Chame-os em um UDF ou em computação em cluster.
  • Para from_bytes e from_local_file, os UDFs do Python inferem content_type a partir da extensão do caminho, enquanto os UDFs do Scala inferem a partir dos bytes mágicos do arquivo.
  • Devolver a FileRef de um UDF que escreve para uma FILE MANAGED coluna não é suportado.