[Spark] Spark RDD 기본 정리

Woong·2021년 12월 20일
0

Apache Spark

목록 보기
4/22

PairRDD

  • key-value 쌍 또는 key-value 튜플로 구성된 RDD.
    • Pair RDD 에서만 사용할 수 있는 API도 있음.

sample, takeSample, take

  • RDD에서 랜덤으로 샘플링하는 API. 인자에 따라 복원, 비복원 추출 가능
  • ※ take 는 파티션을 하나씩 처리해 연산이 분산되지 않으므로 빠르게 처리하고 싶다면 요소 개수를 줄인 후(메모리 초과 안하도록) collect 를 사용하는 것이 좋음.

lookup(key)

  • 단일 key로 value 찾기
    • ※ 결과를 드라이버로 전송하므로, 메모리 부족하지 않은지 확인이 필요함.

sumApprox, meanApprox

  • 제한 시간 내 근사 합계/평균을 계산
  • Double 타입 RDD 에서만 사용 가능함.

key, value 확인

  • testRDD.keys -> key 목록
  • testRDD.values -> value 목록
    • 또는 testRDD.map(._1), testRDD.map(._2) 호출해도 동일한 동작
  • testRDD.keys.distict() -> 중복 제거된 key 목록
  • testRDD.keys.distict().count() -> 중복 제거된 key 전체 개수

testRDD.countByKey()

  • key별 갯수.

mapValue(...)

  • key 변경 없이 PairRDD의 값만 변경.

reduceByKey(..) ★★★

  • 각 key의 모든 value을 동일한 타입의 단일 value으로 변경
  • value 를 하나로 병합하는 merge 함수 전달 필요
    • 각 키별로 value가 하나만 남을 때까지 merge 함수가 호출됨

foldByKey(..)

  • reduceByKey 와 비슷.
  • zeroValue (항등원)을 추가로 받아서 merge 첫 연산에 사용됨
    • ※ RDD 연산이 병렬이므로 zeroValue가 여러번 쓰일 수 있음

aggregateByKey(..)

  • zeroValue 값을 받아 RDD를 병합.
    • ※ value 타입을 바꿀 수 있음. 그 외에는 reducyByKey와 유사.

distinct()

  • 중복 제거하여 새로운 RDD를 리턴함

countByKey()

  • 각 key의 출현 횟수를 나타냄
    • ex. 69는 몇번, 88은 몇번 등등
  • ex) countByKey().sortBy(_._2).last
    • -> 값이 가장 큰 행을 가져옴 (값으로 sort하였으므로)

0개의 댓글