mapInArrow

Asigna un iterador de lotes en el DataFrame actual mediante una función nativa de Python que se realiza en pyarrow.RecordBatch como entrada y salida, y devuelve el resultado como dataFrame.

Sintaxis

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

Parámetros

Parámetro Tipo Descripción
func function una función nativa Python que toma un iterador de pyarrow.RecordBatchs y genera un iterador de pyarrow.RecordBatchs.
schema DataType o str el tipo de valor devuelto de func en PySpark. El valor puede ser un pyspark.sql.types.DataType objeto o una cadena de tipo con formato DDL.
barrier bool, opcional, false predeterminado Use la ejecución del modo de barrera, asegurándose de que todos los Python trabajadores de la fase se iniciarán simultáneamente.
profile ResourceProfile, opcional ResourceProfile opcional que se usará para mapInArrow.

Devoluciones

DataFrame

Ejemplos

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