Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
Databricks Runtime 18 LTS e superiores
Importante
Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir as pré-visualizações de Azure Databricks.
FileType é o tipo PySpark para o tipo SQL FILE , uma referência a um ficheiro não estruturado e aos seus metadados. Use-o para declarar FILE parâmetros e tipos de retorno em funções definidas pelo utilizador (UDFs) em Python. Em Python, um FILE valor é um FileRef objeto que contém os metadados do ficheiro e lê os seus bytes.
Para a referência de tipos SQL e visão conceptual, vejaFILE type e FILE type e dados não estruturados. Para exemplos de UDF em processamento de ficheiros, veja Processos de ficheiros com UDFs.
Observação
Este FILE tipo não é suportado em notebooks serverless. É suportado em notebooks ligados a databricks SQL warehouses serverless.
Import
from pyspark.sql.types import FileType, FileRef
FileType
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 num esquema.
FileType não especifica MANAGED nem EXTERNAL. Esses qualificadores aplicam-se apenas a uma FILE coluna de tabela, onde a coluna determina se uma referência é armazenada como gerida ou externa. Um UDF passa e devolve FILE referências, e a coluna alvo decide como cada referência é armazenada quando se escreve o resultado numa tabela.
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 topo.
- 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 ficheiros externos.
Quando uma consulta devolve 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 Python para um FILE. Contém os metadados do ficheiro e tem métodos para ler os bytes do ficheiro e criar novas referências.
Attributes
| Attribute | Tipo | Description |
|---|---|---|
uri |
str |
O URI do ficheiro. Sempre pronto. |
offset |
int |
Um deslocamento para o ficheiro, em bytes. |
size |
int |
O tamanho do arquivo em bytes. |
content_type |
str |
O tipo MIME do ficheiro, quando conhecido. |
checksum |
str |
Um token de integridade para os bytes do ficheiro, da forma <algorithm>:<digest>. Para os algoritmos reconhecidos, veja Somas de Controlo. |
Methods
| Método | Description |
|---|---|
as_local_file() |
Devolve a pathlib.Path ao ficheiro. Passe o resultado a qualquer biblioteca que aceite um caminho. Disponível no Azure Databricks compute (notebooks e trabalhadores UDF). Não está disponível num cliente Databricks Connect, como um IDE ou aplicação local que execute o seu código fora do computo do Azure Databricks. |
open() |
Abre o ficheiro para leitura binária e devolve um objeto de ficheiro. O interlocutor encerra-o. Tem o mesmo requisito de computação que as_local_file(). |
from_bytes(content, path=None, content_type=None) |
Método de classe. Carrega content (um bytes valor) para o caminho de volume do Unity Catalog dado por path e retorna um FileRef. Falha se um ficheiro 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. Carrega um ficheiro local para um volume do Unity Catalog e retorna um FileRefarquivo . Os path parâmetros e content_type comportam-se como em from_bytes. Suportado apenas dentro de um UDF. |
Example
No código seguinte, uma UDF escalar recebe um FILE valor como FileRef, abre a imagem e devolve as 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 ficheiros, incluindo a geração de ficheiros com um UDTF, veja Processos de ficheiros com UDFs. Para a autoria geral de UDF, veja funções escalares definidas pelo utilizador (UDFs) em Python e funções de tabela definidas pelo utilizador em Python (UDTFs).
Limitações
O uso FileType no PySpark tem as seguintes limitações:
- O PySpark não suporta declarações
FILE MANAGEDouFILE EXTERNALcolunas de tabelas, nem a ingestão de ficheiros em massa. Usa SQL para essas operações. O PySpark só suportaFILE, comoFileType, em UDFs e leituras de ficheiros. -
as_local_file()eopen()requerem acesso do lado do cluster, pelo que não estão disponíveis num cliente Databricks Connect . Chama-os num UDF ou em computação em cluster. - Para
from_bytesefrom_local_file, os UDFs de Python inferemcontent_typea partir da extensão de caminho, enquanto os UDFs de Scala inferem a partir dos bytes mágicos do ficheiro. - Devolver a
FileRefde um UDF que escreve numaFILE MANAGEDcoluna não é suportado.