Spark RDD

박제연·2022년 10월 1일
0
  • RDD: resilient distributed data

    • 스파크에서 in-memory 기반으로 분산환경에서 대용량 데이터를 처리하기 위해 만든 일종의 자료구조
    • 목적: 뷴산 컬랙션의 성질과 장애 내성을 추상화 -> 직관적이고 효율적인 대규모 데이터 셋 처리
  • RDD 연산 : Lazy execution
    - 연산을 즉시 처리하지 않고, 계산의 결과값이 필요할때까지 계산을 늦추는 기법

  • Spark는 연산들을 바로하지 않고, 계산과정을 Lineage에 저장한 뒤, 마지막에 결과를 보여주거나 반환할 때 계산을 실행한다.

    1. 변환 연산자들의 연산과정을 RDD lineage에 저장
    2. 행동 연산자가 호출되면 lineage를 토대로 최적화된 실행과정을 만듦
    3. 이를 토대로 최적화된 연산 실행
    • 행동 연산자: count, collect와 같이 결과를 반환하는 연산

      • 최종 결과 값을 반환하거나 외부 저장소에 값을 기록하는 연산
        • 호출 시 최적화된 경로로 계산을 진행한 뒤, 최종 결과를 return => " RDD in, Other out "
    • 변환 연산자: map, filter와 같이 결과를 바로 안 보여줘도 되는 연산

      • 불변성을 가지는 RDD의 형태를 변형하는 연산
      • 기존의 RDD를 입력받아서, 새로운 RDD를 return => " RDD in, RDD out "
      • Action연산이 호출될 때까지는 실제로 수행되지 않음(Lazy execution)
  • RDD 연산
    1. Map

rdd.map(lambda x : x + 1)
# (1, 2, 3, 3) 을 가지고 있는 Rdd에 대해 연산 시 return: (2, 3, 4, 4)
   
profile
읏차 웃자

0개의 댓글