Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks Runtime 18 LTS ke atas
Important
Fitur ini ada di Beta. Admin ruang kerja dapat mengontrol akses ke fitur ini dari halaman Pratinjau . Lihat Kelola Pratinjau Azure Databricks.
FileType adalah tipe PySpark untuk tipe SQL FILE , sebuah referensi ke file tidak terstruktur dan metadatanya. Gunakan untuk mendeklarasikan FILE parameter dan tipe pengembalian dalam fungsi yang didefinisikan pengguna (UDF) Python. Dalam Python, FILE nilai adalah objek FileRef yang menyimpan metadata file dan membaca byte-nya.
Untuk referensi tipe SQL dan gambaran konseptual, lihat FILE tipe dan tipe FILE serta data tidak terstruktur. Untuk contoh UDF pemrosesan file, lihat Proses file dengan UDF.
Catatan
Tipe ini FILE tidak didukung pada notebook serverless. Ini didukung pada notebook yang terhubung ke gudang SQL Databricks tanpa server.
Import
from pyspark.sql.types import FileType, FileRef
FileType
FileType adalah subkelas pyspark.sql.types.DataType. Gunakan sebagai parameter atau tipe return dari UDF, atau sebagai tipe field dalam skema.
FileType tidak menentukan MANAGED atau EXTERNAL. Kualifikasi tersebut hanya berlaku untuk FILE kolom tabel, di mana kolom menentukan apakah referensi disimpan sebagai terkelola atau eksternal. UDF mengirimkan dan mengembalikan FILE referensi, dan kolom target menentukan bagaimana setiap referensi disimpan saat Anda menulis hasil ke tabel.
Anda dapat menggunakannya FileType dengan cara berikut, yang juga berlaku untuk UDF SQL dan Scala serta prosedur tersimpan SQL:
- Sebagai tipe tingkat atas.
- Bersarang di dalam atau
StructType.ArrayType - Sebagai tipe nilai dari ,
MapTypetetapi bukan sebagaiMapTypekunci. - Di dalam ,
VariantTypetapi hanya untuk file eksternal.
Ketika sebuah kueri mengembalikan FILE kolom ke Python, baik di dalam UDF maupun melalui DataFrame.collect(), setiap nilai adalah .FileRef
FileRef
A FileRef adalah nilai Python untuk .FILE Perangkat ini menyimpan metadata file dan memiliki metode untuk membaca byte file serta membuat referensi baru.
Atribut
| Attribute | Tipe | Description |
|---|---|---|
uri |
str |
URI dari file. Selalu siap. |
offset |
int |
Offset ke dalam file, dalam byte. |
size |
int |
Ukuran file dalam satuan byte. |
content_type |
str |
Jenis MIME dari file, jika diketahui. |
checksum |
str |
Token integritas untuk byte file, berbentuk <algorithm>:<digest>. Untuk algoritma yang diakui, lihat Checksums. |
Methods
| Metode | Description |
|---|---|
as_local_file() |
Mengembalikan a pathlib.Path ke file. Teruskan hasilnya ke pustaka mana pun yang menerima jalur. Tersedia di Azure Databricks compute (notebook dan pekerja UDF). Tidak tersedia pada klien Databricks Connect, seperti IDE atau aplikasi lokal yang menjalankan kode Anda di luar komputasi Azure Databricks. |
open() |
Membuka file untuk pembacaan biner dan mengembalikan objek file. Penelepon menutupnya. Memiliki persyaratan komputasi yang sama dengan as_local_file(). |
from_bytes(content, path=None, content_type=None) |
Metode kelas. Mengunggah content (sebuah bytes nilai) ke jalur volume Unity Catalog yang diberikan oleh path dan mengembalikan .FileRef Gagal jika file sudah ada di jalur target. Hanya didukung di dalam UDF. |
from_local_file(local_file, path=None, content_type=None) |
Metode kelas. Mengunggah file lokal ke volume Unity Catalog dan mengembalikan .FileRef Parameter dan berperilaku path seperti dalam content_type.from_bytes Hanya didukung di dalam UDF. |
Example
Dalam kode berikut, UDF skalar menerima FILE nilai sebagai FileRef, membuka gambar, dan mengembalikan dimensinya:
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()
Untuk contoh UDF pemrosesan file lainnya, termasuk menghasilkan file dengan UDTF, lihat Proses file dengan UDF. Untuk pembuatan UDF umum, lihat fungsi user-defined Python scalar (UDF) dan Python user-defined table functions (UDTFs).
Keterbatasan
Penggunaan FileType di PySpark memiliki keterbatasan sebagai berikut:
- PySpark tidak mendukung deklarasi
FILE MANAGEDatauFILE EXTERNALtabel kolom atau pengingkapan file secara massal. Gunakan SQL untuk operasi tersebut. PySpark hanya mendukungFILE, asFileType, dalam UDF dan pembacaan file. -
as_local_file()danopen()memerlukan akses sisi kluster, sehingga tidak tersedia di klien Databricks Connect . Panggil mereka dalam UDF atau komputasi cluster sebagai gantinya. - Untuk
from_bytesdanfrom_local_file, UDF Python menyimpulkancontent_typedari ekstensi jalur, sedangkan UDF Scala menyimpulkannya dari byte ajaib file. - Mengembalikan dari
FileRefUDF yang menulis keFILE MANAGEDkolom tidak didukung.