Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Crée une fonction de table définie par l’utilisateur native PyArrow (UDTF). Cette fonction fournit une interface native PyArrow pour les fonctions définies par l’utilisateur, où la méthode eval reçoit PyArrow RecordBatches ou Arrays et retourne un itérateur de tables PyArrow ou RecordBatches. Cela permet un calcul vectorisé vrai sans surcharge de traitement de ligne par ligne.
Syntaxe
from pyspark.databricks.sql import functions as dbf
@dbf.arrow_udtf(returnType=<returnType>)
class MyUDTF:
def eval(self, ...):
...
Paramètres
| Paramètre | Type | Descriptif |
|---|---|---|
cls |
classoptionnel |
Classe de gestionnaire de fonction table définie par l’utilisateur Python. |
returnType |
pyspark.sql.types.StructType ou str, facultatif |
Type de retour de la fonction de table définie par l’utilisateur. La valeur peut être un objet StructType ou une chaîne de type de struct au format DDL. |
Examples
UDTF avec l’entrée RecordBatch PyArrow :
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 avec les entrées 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()
Note
- La méthode eval doit accepter PyArrow RecordBatches ou Arrays comme entrée
- La méthode eval doit générer des tables PyArrow ou RecordBatches en tant que sortie