mapInArrow

Сопоставляет итератор пакетов в текущем кадре данных с помощью собственной функции Python, выполняемой на pyarrow.RecordBatch как входных, так и выходных данных, и возвращает результат в виде кадра данных.

Синтаксис

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

Параметры

Параметр Тип Описание
func function собственная функция Python принимает итератор pyarrow.RecordBatch и выводит итератор pyarrow.RecordBatch.
schema DataType или str возвращаемый тип func в PySpark. Значение может быть либо объектом, либо pyspark.sql.types.DataType строкой типа, отформатированным DDL.
barrier bool, необязательный, по умолчанию false Используйте выполнение режима барьера, гарантируя, что все Python работники на этапе будут запущены одновременно.
profile ResourceProfile, необязательный Необязательный объект ResourceProfile, используемый для mapInArrow.

Возвраты

DataFrame

Примеры

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