arrow_udtf

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