Freigeben über


mapInArrow

Ordnet einen Iterator von Batches im aktuellen DataFrame mithilfe einer Python systemeigenen Funktion zu, die für pyarrow.RecordBatchs sowohl als Eingabe als auch als Ausgabe ausgeführt wird, und gibt das Ergebnis als DataFrame zurück.

Syntax

mapInArrow(func: "ArrowMapIterFunction", schema: Union[StructType, str], barrier: bool = False, profile: Optional[ResourceProfile] = None)

Parameter

Parameter Typ Beschreibung
func Funktion eine Python systemeigene Funktion, die einen Iterator von pyarrow.RecordBatchs verwendet, und gibt einen Iterator von pyarrow.RecordBatchs aus.
schema Datentyp oder str der Rückgabetyp des func PySpark. Der Wert kann ein pyspark.sql.types.DataType Objekt oder eine DDL-formatierte Typzeichenfolge sein.
barrier bool, optional, default False Verwenden Sie die Ausführung des Barrierenmodus, um sicherzustellen, dass alle Python Worker in der Phase gleichzeitig gestartet werden.
profile ResourceProfile, optional Das optionale ResourceProfile,das für mapInArrow verwendet werden soll.

Rückkehr

DataFrame

Beispiele

import pyarrow as pa
df = spark.createDataFrame([(1, 21), (2, 30)], ("id", "age"))
def filter_func(iterator):
    for batch in iterator:
        pdf = batch.to_pandas()
        yield pa.RecordBatch.from_pandas(pdf[pdf.id == 1])
df.mapInArrow(filter_func, df.schema).show()
# +---+---+
# | id|age|
# +---+---+
# |  1| 21|
# +---+---+

df.mapInArrow(filter_func, df.schema, barrier=True).collect()
# [Row(id=1, age=21)]