아파치 스파크 연산

IT 위키
AlanTuring (토론 | 기여)님의 2025년 3월 11일 (화) 22:19 판 (새 문서: 아파치 스파크(Apache Spark)는 대규모 데이터 처리를 위한 분산 컴퓨팅 프레임워크로, 다양한 연산(Transformation 및 Action)을 제공한다. 스파크 연산은 크게 '''변환(Transformation)'''과 '''액션(Action)'''으로 나뉘며, 이들을 활용하여 데이터를 효율적으로 처리할 수 있다. ==연산의 종류== 아파치 스파크의 연산은 크게 두 가지로 나뉜다. *'''Transformation(변환)''' - 기존 RDD(Resilient D...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

아파치 스파크(Apache Spark)는 대규모 데이터 처리를 위한 분산 컴퓨팅 프레임워크로, 다양한 연산(Transformation 및 Action)을 제공한다. 스파크 연산은 크게 변환(Transformation)액션(Action)으로 나뉘며, 이들을 활용하여 데이터를 효율적으로 처리할 수 있다.

1 연산의 종류[편집 | 원본 편집]

아파치 스파크의 연산은 크게 두 가지로 나뉜다.

  • Transformation(변환) - 기존 RDD(Resilient Distributed Dataset)에서 새로운 RDD를 생성하는 연산.
  • Action(액션) - RDD에서 연산을 수행하고 최종 결과를 반환하는 연산.

2 Transformation 연산[편집 | 원본 편집]

Transformation 연산은 지연 실행(lazy evaluation)을 기반으로 동작하며, 액션이 호출될 때까지 실행되지 않는다.

2.1 주요 Transformation 연산[편집 | 원본 편집]

Transformation 연산
연산 설명 예제
map 각 요소에 함수를 적용하여 새로운 RDD를 생성 rdd.map(lambda x: x * 2)
flatMap 각 요소를 여러 개의 출력 요소로 변환 rdd.flatMap(lambda x: x.split(" "))
filter 조건을 만족하는 요소만 포함하는 RDD 생성 rdd.filter(lambda x: x % 2 == 0)
distinct 중복 요소를 제거한 새로운 RDD 생성 rdd.distinct()
union 두 개의 RDD를 병합하여 하나의 RDD 생성 rdd1.union(rdd2)
intersection 두 개의 RDD에서 공통 요소만 포함 rdd1.intersection(rdd2)
subtract 첫 번째 RDD에서 두 번째 RDD의 요소를 제거 rdd1.subtract(rdd2)
cartesian 두 개의 RDD의 데카르트 곱을 생성 rdd1.cartesian(rdd2)

3 Action 연산[편집 | 원본 편집]

Action 연산은 RDD에서 연산을 수행하고 결과를 반환하는 연산이다. Action 연산이 호출될 때, 스파크는 지연 실행된 Transformation을 실행하여 최종 결과를 생성한다.

3.1 주요 Action 연산[편집 | 원본 편집]

Action 연산
연산 설명 예제
collect RDD의 모든 요소를 리스트로 반환 rdd.collect()
count RDD의 요소 개수를 반환 rdd.count()
first RDD의 첫 번째 요소를 반환 rdd.first()
take(n) RDD의 처음 n개 요소를 반환 rdd.take(5)
reduce RDD의 모든 요소에 연산을 적용하여 단일 값 반환 rdd.reduce(lambda a, b: a + b)
foreach 각 요소에 대해 함수를 실행 (반환 없음) rdd.foreach(lambda x: print(x))

4 Key-Value 기반 연산[편집 | 원본 편집]

아파치 스파크는 Key-Value 형태의 RDD(Pair RDD)에 대해 다양한 연산을 제공한다.

4.1 주요 Key-Value 연산[편집 | 원본 편집]

Key-Value 연산
연산 설명 예제
reduceByKey 동일한 키를 가진 값들을 집계 rdd.reduceByKey(lambda a, b: a + b)
groupByKey 동일한 키를 가진 값들을 그룹화 rdd.groupByKey()
sortByKey 키를 기준으로 정렬 rdd.sortByKey()
join 두 개의 Key-Value RDD를 조인 rdd1.join(rdd2)
leftOuterJoin 왼쪽 RDD의 모든 키와 오른쪽 RDD에서 일치하는 키를 조인 rdd1.leftOuterJoin(rdd2)
rightOuterJoin 오른쪽 RDD의 모든 키와 왼쪽 RDD에서 일치하는 키를 조인 rdd1.rightOuterJoin(rdd2)

5 연산 최적화 기법[편집 | 원본 편집]

아파치 스파크에서는 성능을 최적화하기 위해 다양한 기법을 활용한다.

  1. 캐싱(Caching)과 체크포인팅(Checkpointing) - 반복 사용되는 RDD를 메모리에 저장하여 성능을 향상.
  2. 파티셔닝(Partitioning) - 데이터를 균등하게 분배하여 작업 부하를 줄임.
  3. Shuffling 최소화 - reduceByKeygroupByKey보다 적은 Shuffling을 발생시켜 성능이 좋음.
  4. BroadCast Variable - 모든 워커 노드에서 공통적으로 사용하는 변수를 캐싱하여 네트워크 비용 절감.

6 같이 보기[편집 | 원본 편집]