Pular para o conteúdo principal

seta_udtf

Cria uma função de tabela definida pelo usuário (UDTF) nativa do PyArrow. Esta função fornece uma interface nativa do PyArrow para UDTFs, onde o método eval recebe RecordBatches ou Arrays do PyArrow e retorna um Iterator de Tabelas ou RecordBatches do PyArrow. Isso possibilita computação verdadeiramente vetorizada sem a sobrecarga do processamento linha por linha.

Sintaxe

Python
from pyspark.databricks.sql import functions as dbf

@dbf.arrow_udtf(returnType=<returnType>)
class MyUDTF:
def eval(self, ...):
...

Parâmetros

Parâmetro

Tipo

Descrição

cls

class, opcional

Classe de manipulador de função de tabela definida pelo usuário em Python.

returnType

pyspark.sql.types.StructType ou str, opcional

O tipo de retorno da função de tabela definida pelo usuário. O valor pode ser um objeto StructType ou uma string de tipo struct formatada em DDL.

Exemplos

UDTF com entrada RecordBatch do PyArrow:

Python
import pyarrow as pa
from pyspark.databricks.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 com entradas de matriz PyArrow:

Python
@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
  • O método `eval` deve aceitar `PyArrow RecordBatches` ou `Arrays` como entrada.
  • O método `eval` deve retornar tabelas PyArrow ou lotes de registros como saída.