IT용어위키



아파치 스파크 연산

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

연산의 종류

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

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

Transformation 연산

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

주요 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)

Action 연산

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

주요 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))

Key-Value 기반 연산

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

주요 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)

연산 최적화 기법

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

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

같이 보기


  출처: IT위키(IT위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!