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 |
댓글