[스터디] 스파크 완벽 가이드 12일차

Kristopher·2022년 1월 31일
0

Spark 스터디

목록 보기
12/16

Chapter 12 RDD

저수준 API란?

스파크에는 두 종류의 저수준 API가 있다. 분산 데이터 처리를 위한 RDD와 브로드캐스트 변수와 어큐뮬레이터처럼 분산형 공유 변수를 배포하고 다루기 위한 API가 있다. 저수준 API를 사용하는 상황은 다음과 같다.

  • 고수준 API에서 제공하지 않는 기능이 필요한 경우
  • RDD를 사용해 기존의 개발된 코드를 유지해야하는 경우
  • 사용자가 정의한 공유 변수를 다뤄야 하는 경우

저수준 API는 SparkContext를 활용하여 진입한다.

RDD란?

간단하게 RDD를 정의하면 불변성을 가지며 병렬로 처리할 수 있는 파티셔닝된 레코드의 모음이다. 물리적으로 분산된 데이터에 세부적인 제어가 필요한 경우 RDD를 사용하는 것이 가장 적합하다. DataFrame은 구조화된 로우인 반면, RDD는 프로그래머가 선택하는 자바, 스칼라, 파이썬의 객체이다. 특정 언어의 개체인 만큼 완벽하게 제어할 수 있고, 사용자가 원하는 포맷을 활용해 데이터를 저장할 수 있다. 다만 이 모든 상호작용 과정을 수동으로 정의해야한다는 단점이 존재한다.

RDD의 종류

RDD에는 제네릭 RDD타입과 key-value RDD타입이 존재한다. 둘 다 객체의 컬렉션을 표현하지만 key-valueRDD는 특수 연산과 키를 이용한 사용자 지정 파티셔닝 개념을 가지고 있다. 내부적으로 RDD가 가지는 주요 속성은 다음과 같다.

  • 파티션의 목록
  • 각 조각을 연산하는 함수
  • 다른 RDD와의 의존성 목록
  • 부가적으로 key-valueRDD를 위한 Partitioner
  • 부가적으로 각 조각을 연산하기 위한 기본 위치 목록

이러한 속성이 프로그램을 스케줄링하고 실행하는 처리방식을 결정하고, 사용자는 각 속성을 구현하여 새로운 데이터소스를 정의할 수도 있다.

RDD 생성하기

RDD를 생성하는 방법에는 여러가지가 있다

  • DataFrame, Dataset으로 RDD 생성하기(자바와 스칼라만 가능)
  • 로컬 컬렉션으로 RDD 생성하기
  • 데이터소스로 RDD 생성하기

트랜스포메이션

RDD의 트랜스포메이션은 DataFrame, Dataset과 동일하게 새로운 RDD 생성을 가능하게 한다. 이때 RDD에 포함된 데이터를 다루는 함수에 따라 다른 RDD에 대한 의존성도 함께 정의한다.

distinct() : RDD에서 중복된 데이터 제거
filter() : 조건에 부합하는 데이터만 남김
map() : 주어진 입력을 원하는 값으로 변환하는 함수를 명시하고 레코드별로 적용
flatMap() : map함수의 확장 버전으로 단일 로우를 여러 로우로 변환할 때 사용
sortBy() : 정렬시 사용
randomSplit() : RDD를 임의로 분할해 RDD 배열을 만들 때 사용

액션

지정된 트랜스포메이션 연산을 시작하기 위해 액션을 사용한다. 액션은 데이터를 드라이버로 모으거나 외부 데이터소스로 내보낼 수 있다.

reduce() : 모든 값을 하나의 값으로 만들 때 사용
count() : RDD의 전체 로우 수 계산(count 관련 세부 메서드들이 존재)
first() : 데이터셋의 첫 번째 값 반환
max(), min() : 최대값/최소값 반환
take() : RDD에서 가져올 값의 개수를 파라미터로 사용

캐싱

RDD를 캐시하거나 저장할 수 있다. 기본적으로 캐시와 저장은 메모리에 있는 데이터만을 대상으로 한다.

체크포인팅

DataFrame에서 사용할 수 없는 기능 중 하나이다. RDD를 디스크에 저장하여 나중에 참조할 수 있도록 하는데, 이 방식은 메모리에 저장하지 않고 디스크에 저장하는 캐시의 방식이라고 이해할 수 있다. 반복적인 연산 수행시 유용하다.

RDD를 시스템 명령으로 전송

pipe 메서드를 사용하여 파이핑 요소로 생성된 RDD를 외부 프로세스로 전달할 수 있다. 외부 프로세스는 파티션마다 한 번씩 처리해 결과 RDD를 생성한다. 각 파티션의 모든 요소는 프로세스의 표준 입력에 전달되고 결과 파티션은 프로세스의 표준 출력으로 생성된다.

Reference

스파크 완벽 가이드
아파치 스파크

profile
개발자 지망생입니다.

0개의 댓글