Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Hiermee maakt u een door de gebruiker gedefinieerde tabelfunctie (UDTF) van PyArrow. Deze functie biedt een systeemeigen PyArrow-interface voor UDDF's, waarbij de eval-methode PyArrow RecordBatches of Arrays ontvangt en een Iterator van PyArrow Tables of RecordBatches retourneert. Dit maakt true vectorized berekening mogelijk zonder rij-by-row verwerkingsoverhead.
Syntaxis
from pyspark.databricks.sql import functions as dbf
@dbf.arrow_udtf(returnType=<returnType>)
class MyUDTF:
def eval(self, ...):
...
Parameterwaarden
| Kenmerk | Typologie | Description |
|---|---|---|
cls |
classfacultatief |
De door de gebruiker gedefinieerde tabelfunctiehandlerklasse van Python. |
returnType |
pyspark.sql.types.StructType of str, optioneel |
Het retourtype van de door de gebruiker gedefinieerde tabelfunctie. De waarde kan een StructType-object of een DDL-indelingstypetekenreeks zijn. |
Voorbeelden
UDTF met PyArrow RecordBatch-invoer:
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 met PyArrow-matrixinvoer:
@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()
Opmerking
- De eval-methode moet PyArrow RecordBatches of Arrays als invoer accepteren
- De evaluatiemethode moet PyArrow Tables of RecordBatches als uitvoer opleveren