← 학습 카테고리

Learn

Spark

84개 모듈 · 현재 79번째

Spark 모듈 79/84 spark-learn-79

mapInPandas — 그룹 없이 파티션 단위로 pandas 변환을 적용한다

PySpark mapInPandas 및 Structured Streaming foreach/ForeachWriter 공식 문서 종합 (웹 리서치, 2026) — Apache Spark 공식문서(pyspark.sql.DataFrame.mapInPandas, pyspark.sql.GroupedData.applyInPandas), Databricks 공식 문서(structured-streaming/foreach) Apache Spark 공식문서 pyspark.sql.DataFrame.mapInPandas

이 모듈을 다 읽으면

  • mapInPandas가 spark-learn-70의 GROUPED_MAP(applyInPandas)과 어떻게 다른지(그룹핑 유무) 설명할 수 있다
  • 입력과 출력 이터레이터의 pandas.DataFrame 개수·크기가 서로 다를 수 있다는 것을 설명할 수 있다

spark-learn-70에서 다룬 GROUPED_MAP(그룹 하나를 통째로 받아 처리)을 전제로, 그룹핑 없이 파티션 단위로 pandas.DataFrame 이터레이터를 그대로 변환하는 mapInPandas를 정리한다.

행마다 독립 처리 — 그룹 없는 배치 변환

spark-learn-70에서 다룬 applyInPandas(GROUPED_MAP)가 '같은 사용자가 구매한 항목들'처럼 그룹 하나를 통째로 pandas.DataFrame으로 묶어 처리한다면, mapInPandas는 그런 그룹핑 없이 각 행이 서로 독립적으로 처리되는 경우에 쓴다 — groupBy() 없이 DataFrame 전체를 파티션 단위로 순회하며 변환한다.

핵심 포인트

  • applyInPandas(spark-learn-70의 GROUPED_MAP): 그룹 하나를 통째로 pandas.DataFrame으로 묶어 처리
  • mapInPandas: 그룹핑 없이 각 행이 독립적으로 처리되는 경우에 사용 — groupBy() 불필요

이터레이터 입출력 — 입력과 출력의 배치 개수·크기가 달라도 된다

mapInPandas는 pandas.DataFrame의 이터레이터를 입력받아 pandas.DataFrame의 또 다른 이터레이터를 반환하는 함수를 받는다 — 함수의 입력과 출력에서 pandas.DataFrame의 개수·크기가 서로 달라도 된다(예: 입력 배치 하나를 여러 개의 작은 출력 배치로 쪼개거나, 여러 입력을 하나로 합쳐도 무방). 입력 쪽 각 pandas.DataFrame의 크기는 spark.sql.execution.arrow.maxRecordsPerBatch로 조절할 수 있다 — spark-learn-49에서 다룬 Arrow 기반 최적화가 여기서도 그대로 쓰인다.

핵심 포인트

  • 함수는 pandas.DataFrame 이터레이터를 받아 또 다른 pandas.DataFrame 이터레이터를 반환 — 입출력 배치 개수·크기가 서로 달라도 됨
  • 입력 배치 크기는 spark.sql.execution.arrow.maxRecordsPerBatch로 조절 — spark-learn-49의 Arrow 최적화가 여기도 적용