mapInArrow

Mappar en iterator av batchar i den aktuella DataFrame med hjälp av en Python intern funktion som utförs på pyarrow.RecordBatchs både som indata och utdata och returnerar resultatet som en DataFrame.

Syntax

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

Parameters

Parameter Type Beskrivning
func function en Python intern funktion som tar en iterator av pyarrow.RecordBatchs och matar ut en iterator av pyarrow.RecordBatchs.
schema DataType eller str returtypen för func i PySpark. Värdet kan vara antingen ett pyspark.sql.types.DataType objekt eller en DDL-formaterad typsträng.
barrier bool, valfritt, standard falskt Använd körning av barriärläge så att alla Python arbetare i fasen startas samtidigt.
profile ResourceProfile, valfritt Den valfria ResourceProfile som ska användas för mapInArrow.

Retur

DataFrame

Exempel

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)]