Pular para o conteúdo principal

mapaNaSeta

Mapeia um iterador de lotes no DataFrame atual usando uma função nativa do Python que é executada em pyarrow.RecordBatchs tanto como entrada quanto como saída e retorna o resultado como um DataFrame.

Sintaxe

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

Parâmetros

Parâmetro

Tipo

Descrição

func

função

Uma função nativa do Python que recebe um iterador de pyarrow.RecordBatchelementos e retorna um iterador de pyarrow.RecordBatchelementos.

schema

Tipo de dados ou str

o tipo de retorno de func em PySpark. O valor pode ser um objeto pyspark.sql.types.DataType ou uma string de tipo formatada em DDL.

barrier

booleano, opcional, default : Falso

Utilize a execução em modo de barreira, garantindo que todos os processos Python no estágio sejam iniciados simultaneamente.

profile

Perfil de recurso, opcional

O ResourceProfile opcional a ser usado para mapInArrow.

Devoluções

DataFrame

Exemplos

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