Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vytvoří uživatelsky definovanou funkci tabulky (UDTF) nativní pro PyArrow. Tato funkce poskytuje nativní rozhraní PyArrow pro UDTFs, kde metoda eval přijímá PyArrow RecordBatches nebo Arrays a vrací Iterátor PyArrow Tables nebo RecordBatches. To umožňuje skutečné vektorizované výpočty bez režie na zpracování po řádcích.
Syntaxe
from pyspark.sql import functions as dbf
@dbf.arrow_udtf(returnType=<returnType>)
class MyUDTF:
def eval(self, ...):
...
Parametry
| Parameter | Typ | Description |
|---|---|---|
cls |
classvolitelný |
Třída obslužné rutiny funkce definované uživatelem v Pythonu |
returnType |
pyspark.sql.types.StructType nebo str, volitelné |
Návratový typ uživatelem definované funkce tabulky. Hodnota může být buď objekt StructType nebo řetězec typu struktury ve formátu DDL. |
Examples
UDTF se vstupem 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 se vstupy 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()
Poznámka:
- Metoda eval musí jako vstup přijmout PyArrow RecordBatches nebo Arrays.
- Metoda eval musí jako výstup přinést PyArrow Tables nebo RecordBatches.