Spark의 핵심은 Resilient Distributed Dataset (RDD) -> 복구 가능한 분산 데이터 셋
다양한 데이터 세트를 추상화 한 것.
RDD는 분산되고 변형하는 성질을 갖고 있어 여러 클러스터에 나눌 수 있고 개인 컴퓨터에서도 작동 가능. 클러스터의 특정 노드에 이상이 생겨도 자동으로 처리, 노드 하나가 작동을 멈춰도 계속 작동하면서 작업을 재분배.
RDD는 큰 데이터 셋 -> 한 데이터를 다른 데이터로 변환하는데 쓰임
sc객체를 사용해서 RDD를 생성 할 수 있음.
rdd.map(lamdba x: x**x
flatmap -> map과 비슷한 기능을 수행, 단 새로 생성된 RDD가 기존 RDD보다 크거나 작을 수 있음.
filter -> RDD에 있는 데이터에서 일부분만 보고 싶을 때 사용
distinct -> RDD에서 중복값 제거 함수
uninon, intersaction, subtract -> RDBMS와 동일
collect -> 원하는 값만 출력
countByValue -> 특정한 값이 얼마나 나왔는가
take, top -> 최종적으로 완성한 RDD에서 일부 값을 가져온다
reduce -> 모든 값에 특정한 연산을 해서 하나의 RDD로 합쳐준다
Spark가 빠른이유. Spark에 액션을 입력하면 바로 유향 비순환 그래프를 생성하여 원하는 값을 얻으려면어떻게 해야하는지 최적화된 방법을 계산.