mapInArrow

Mappe un itérateur de lots dans le DataFrame actuel à l’aide d’une fonction native Python effectuée sur pyarrow.RecordBatchs à la fois comme entrée et sortie, et retourne le résultat sous la forme d’un DataFrame.

Syntaxe

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

Paramètres

Paramètre Type Description
func function une fonction native Python qui accepte un itérateur de pyarrow.RecordBatchs et génère un itérateur de pyarrow.RecordBatchs.
schema DataType ou str type de retour de l’objet func PySpark. La valeur peut être un pyspark.sql.types.DataType objet ou une chaîne de type au format DDL.
barrier bool, facultatif, false par défaut Utilisez l’exécution du mode barrière, ce qui garantit que tous les travailleurs Python au cours de l’étape seront lancés simultanément.
profile ResourceProfile, facultatif ResourceProfile facultatif à utiliser pour mapInArrow.

Retours

DataFrame

Exemples

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