Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
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
StructTypeou umArrayType. - Como o tipo de valor de um
MapType, mas não como umaMapTypechave. - 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 EXTERNALcolunas de tabela ou ingesta de arquivos em massa. Use SQL para essas operações. O PySpark só suportaFILE, comoFileType, em UDFs e leituras de arquivos. -
as_local_file()eopen()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_bytesefrom_local_file, os UDFs do Python inferemcontent_typea partir da extensão do caminho, enquanto os UDFs do Scala inferem a partir dos bytes mágicos do arquivo. - Devolver a
FileRefde um UDF que escreve para umaFILE MANAGEDcoluna não é suportado.