mapInArrow

Mapuje iterátor dávek v aktuálním datovém rámci pomocí Python nativní funkce, která se provádí na pyarrow.RecordBatch jako vstup i výstup a vrátí výsledek jako datový rámec.

Syntaxe

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

Parametry

Parameter Typ Description
func funkce nativní funkce Python, která přebírá iterátor pyarrow.RecordBatchs a vypíše iterátor pyarrow.RecordBatchs.
schema Datový typ nebo str návratový func typ v PySpark. Hodnota může být buď objekt, pyspark.sql.types.DataType nebo řetězec typu formátovaný DDL.
barrier bool, optional, default False Používejte provádění režimu bariéry a zajistěte, aby se všechny Python pracovní procesy ve fázi spouštěly souběžně.
profile ResourceProfile, volitelné Volitelný resourceProfile, který se má použít pro mapInArrow.

Návraty

DataFrame

Příklady

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