본문 바로가기
pyspark

PySpark의 map과 flatMap 함수 비교

by kyeongseo.oh 2025. 2. 28.

PySpark의 map과 flatMap 함수를 비교한다.

 

map 함수

정의

map 함수는 RDD의 각 요소에 지정된 함수를 적용하고, 그 결과를 그대로 새로운 RDD의 요소로 사용한다.

 

특징

  • 입력 요소 하나당 출력 요소 하나 (1:1 매핑)
  • 입력과 출력 RDD의 요소 수가 동일함
  • 함수가 반환하는 값(단일 값, 리스트, 튜플 등)이 그대로 새 RDD의 요소가 됨

예제

rdd = sc.parallelize([1, 2, 3])

# 단일 값 반환
result1 = rdd.map(lambda x: x * 2)
# 결과: [2, 4, 6]

# 리스트 반환
result2 = rdd.map(lambda x: [x, x * 2])
# 결과: [[1, 2], [2, 4], [3, 6]]
# 각 요소가 리스트로 래핑됨

 

flatMap 함수

정의

flatMap 함수는 RDD의 각 요소에 지정된 함수를 적용한 후, 반환된 반복 가능한 객체의 모든 요소를 평탄화하여 새로운 RDD를 생성한다.

 

특징

  • 입력 요소 하나당 출력 요소 0개 이상 (1:N 매핑)
  • 입력과 출력 RDD의 요소 수가 다를 수 있음
  • 함수는 반복 가능한 객체(리스트, 튜플 등)를 반환해야 함

예제

rdd = sc.parallelize([1, 2, 3])

# 리스트 반환
result1 = rdd.flatMap(lambda x: [x, x * 2])
# 결과: [1, 2, 2, 4, 3, 6]
# 각 리스트의 요소들이 풀어져서 하나의 평면 RDD가 됨

# 조건부 리스트 반환
result2 = rdd.flatMap(lambda x: [] if x % 2 == 0 else [x, x * 2])
# 결과: [1, 2, 3, 6]
# 짝수(2)에 대해서는 빈 리스트를 반환하므로 결과에 포함되지 않음

 

비교 도표

특성 map flatmap
매핑 관계 1:1 1:N
반환값 처리 함수가 반환한 값 그대로 사용 반환된 반복 가능 객체의 각 요소를 풀어서 사용
요소 수 입력 RDD와 동일 입력 RDD보다 많거나 적을 수 있음
주요 용도 단순 변환 데이터 확장 또는 필터링

 

'pyspark' 카테고리의 다른 글

pyspark aggregateByKey  (0) 2025.03.03
PySpark Key-Value 쌍 연산  (0) 2025.03.01
pyspark countByValue  (0) 2025.02.28
pyspark word count 분석  (0) 2025.02.26

댓글