Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks Runtime 18 LTS i nowszych
Important
Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
FileType to typ PySpark dla typu SQL FILE , odniesienie do pliku nieustrukturyzowanego i jego metadanych. Użyj go do deklarowania FILE parametrów i typów zwrotów w funkcjach zdefiniowanych przez użytkownika (UDF) w Python. W Pythonie wartość FILE to FileRef obiekt, który przechowuje metadane pliku i odczytuje jego bajty.
Aby uzyskać odniesienie do typu SQL i przegląd koncepcyjny, zobacz FILE typ i typ pliku oraz dane niestrukturalne. Przykłady UDF do przetwarzania plików można znaleźć w artykule Pliki procesowe z UDF.
Uwaga / Notatka
Ten FILE typ nie jest obsługiwany na notebookach serwerowych. Jest obsługiwany na notatnikach podłączonych do bezserwerowych magazynów SQL Databricks.
Import
from pyspark.sql.types import FileType, FileRef
FileType
FileType jest podklasą pyspark.sql.types.DataType. Użyj go jako parametru lub typu zwrotu w UDF albo jako typu pola w schemiacie.
FileType nie określa MANAGED ani EXTERNAL. Te kwalifikacje dotyczą tylko kolumny tabelowej FILE , gdzie kolumna decyduje, czy referencja jest przechowywana jako zarządzana czy zewnętrzna. UDF przekazuje i zwraca FILE referencje, a kolumna docelowa decyduje, jak każde odwołanie jest przechowywane podczas zapisywania wyniku w tabeli.
Możesz używać FileType w następujący sposób, który dotyczy także SQL i Scala UDF-ów oraz procedur przechowywanych w SQL:
- Jako osoba na najwyższym poziomie.
- Zagnieżdżone wewnątrz lub
StructTypeArrayType. - Jako typ wartości ,
MapTypeale nie jako klucz.MapType - Wewnątrz ,
VariantTypeale tylko dla plików zewnętrznych.
Gdy zapytanie zwraca kolumnę FILE do Python, czy to wewnątrz UDF, czy przez DataFrame.collect(), każda wartość jest .FileRef
FileRef
A FileRef to wartość Python dla .FILE Przechowuje metadane pliku oraz posiada metody odczytu bajtów pliku oraz tworzenia nowych referencji.
Atrybuty
| Attribute | Typ | Description |
|---|---|---|
uri |
str |
URI pliku. Zawsze ustawione. |
offset |
int |
Przesunięcie do pliku, w bajtach. |
size |
int |
Rozmiar pliku w bajtach. |
content_type |
str |
Typ pliku MIME, gdy jest znany. |
checksum |
str |
Token integralności dla bajtów pliku o postaci <algorithm>:<digest>. Dla rozpoznanych algorytmów zobacz sumy kontrolne. |
Methods
| Metoda | Description |
|---|---|
as_local_file() |
Zwraca a pathlib.Path do pliku. Przekaż wynik do dowolnej biblioteki, która akceptuje ścieżkę. Dostępne na Azure Databricks compute (notebooks and UDF workers). Nie jest dostępny na kliencie Databricks Connect, takim jak IDE lub aplikacja lokalna, która uruchamia Twój kod poza obliczeniami Azure Databricks. |
open() |
Otwiera plik do odczytu binarnego i zwraca obiekt pliku. Dzwoniący zamyka telefon. Ma takie samo wymagania obliczeniowe jak as_local_file(). |
from_bytes(content, path=None, content_type=None) |
Metoda klasowa. Przesyła content (wartośćbytes) do ścieżki woluminów Unity Catalog danej przez path i zwraca .FileRef Nie udaje się, jeśli plik już istnieje na docelowej ścieżce. Obsługiwane tylko wewnątrz UDF. |
from_local_file(local_file, path=None, content_type=None) |
Metoda klasowa. Przesyła lokalny plik do wolumin katalogu Unity i zwraca .FileRef Parametry path i content_type zachowują się jak w from_bytes. Obsługiwane tylko wewnątrz UDF. |
Example
W następującym kodzie skalarny UDF otrzymuje FILE wartość jako , FileRefotwiera obraz i zwraca jego wymiary:
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()
Więcej przykładów UDF do przetwarzania plików, w tym generowania plików za pomocą UDTF, można znaleźć w artykule Pliki procesowe z UDF. W przypadku ogólnego autorstwa UDF zobacz Python scalar user defined functions (UDF) oraz Python user defined table functions (UDTF).
Limitations
Użycie FileType w PySpark ma następujące ograniczenia:
- PySpark nie obsługuje deklarowania
FILE MANAGEDkolumn tabel aniFILE EXTERNALpobierania plików masowo. Używaj SQL do tych operacji. PySpark obsługujeFILEtylko , ponieważFileType, w UDF i odczyty plików. -
as_local_file()iopen()wymagają dostępu po stronie klastra, więc nie są dostępne na kliencie Databricks Connect . Zamiast tego wywołaj je w UDF lub na klasterze. - Dla
from_bytesifrom_local_file, Python UDF wywnioskującontent_typez rozszerzenia ścieżki, natomiast UDF-y Scali wywnioskują je z magicznych bajtów pliku. - Nie obsługuje się zwrotu z
FileRefUDF, który zapisuje do kolumnyFILE MANAGED.