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.
Membuat fungsi tabel yang ditentukan pengguna PyArrow-native (UDTF). Fungsi ini menyediakan antarmuka PyArrow-native untuk UDTF, di mana metode evaluasi menerima PyArrow RecordBatches atau Arrays dan mengembalikan Iterator Tabel PyArrow atau RecordBatches. Ini memungkinkan komputasi vektorisasi benar tanpa overhead pemrosesan baris demi baris.
Syntax
from pyspark.sql import functions as dbf
@dbf.arrow_udtf(returnType=<returnType>)
class MyUDTF:
def eval(self, ...):
...
Parameter-parameternya
| Pengaturan | Tipe | Description |
|---|---|---|
cls |
classfakultatif |
Kelas handler fungsi tabel yang ditentukan pengguna Python. |
returnType |
pyspark.sql.types.StructType atau str, opsional |
Jenis pengembalian fungsi tabel yang ditentukan pengguna. Nilai dapat berupa objek StructType atau string jenis struct berformat DDL. |
Examples
UDTF dengan input PyArrow RecordBatch:
import pyarrow as pa
from pyspark.sql.functions import arrow_udtf
@arrow_udtf(returnType="x int, y int")
class MyUDTF:
def eval(self, batch: pa.RecordBatch):
# Process the entire batch vectorized
x_array = batch.column('x')
y_array = batch.column('y')
result_table = pa.table({
'x': x_array,
'y': y_array
})
yield result_table
df = spark.range(10).selectExpr("id as x", "id as y")
MyUDTF(df.asTable()).show()
UDTF dengan input PyArrow Array:
@arrow_udtf(returnType="x int, y int")
class MyUDTF2:
def eval(self, x: pa.Array, y: pa.Array):
# Process arrays vectorized
result_table = pa.table({
'x': x,
'y': y
})
yield result_table
MyUDTF2(lit(1), lit(2)).show()
Nota
- Metode evaluasi harus menerima PyArrow RecordBatches atau Arrays sebagai input
- Metode evaluasi harus menghasilkan Tabel PyArrow atau RecordBatches sebagai output