스칼라 함수도 이 이름과 같은 함수를 제공하지만,
RDD 함수는 분산 데이터에 적용되며 실제 연산이 지연된다.
ex.
예제 파일의 각 줄을 쉼표로 구분하고, 이를 idsStr RDD 로 구성한 것이다.
이 결과는 Array.toString 메서드가 반환한 값을 출력한 것이다.
( * collect 연산자는 새로운 배열을 생성하고, RDD의 모든 요소를 이 배열에 모아 스파크 셸로 반환한다. )
이는 문자가 아닌 문자열의 '배열' 이다. 이 배열의 배열을 '단일배열' 로 분해하려면,
즉 변환 연산자가 반환한 여러 배열의 모든 요소를 단일 배열로 통합하려는 상황에 flatMap 을 활용하면 좋다.
flatMap은 기본적으로 주어진 함수를 RDD의 모든 요소에 적용한다는 점에서 map 과 동일하다.
다른 점은 익명 함수가 반환한 배열의 중첩구조를 한 단계 제거하고 모든 배열의 요소를 단일 컬렉션으로 병합한다는 것이다.
flatMap 은 map 함수와 달리 1차원 배열을 반환했다.
- sample/take/takeSample
위의 연산자를 사용해 RDD의 요소를 일부 가져올 수 있다.
** sampel 메서드
- 첫번째 인자 : true/flase => 복원/비복원 샘플링
- 두번째 인자 : 각 요소가 샘플링 될 횟수의 기댓값.
- 생략된 세번째 인자 : 시드 (seed) . 인수를 제공하지 않으면 해당인자의 기본 값을 사용한다. 같은 시드는 항상 같은 유사 난수를 생성하기 때문에 프로그램을 테스트하는데 유용하다.
** takeSample
: sample 메서드의 두번째 인자가 기댓값(확률) 이 아닌 정확한 개수 (num) 으로 샘플링 할 때 사용.
val n = intIds.takeSample(false,5)
** take
지정된 개수의 요소들 모을 때 까지 RDD 의 파티션을 하나씩 처리해 결과를 반환한다.
(클러스터의 여러 노드에 저장된 데이터의 일부분)
take 메서드의 결과는 단일 머신에 전송되므로 인자에 너무 큰 수를 지정해서는 안된다.
'Data Engineering > Spark' 카테고리의 다른 글
spark(2) - 실행, RDD, map 변환 연산자 (0) | 2022.08.07 |
---|---|
가상머신 설치 오류) bsdtar: Error opening archive: Unrecognized archive format / github 파일 다운받기 (0) | 2022.07.24 |
Apache Spark - 컴포넌트, 실행과정 (0) | 2022.06.12 |
Apache Spark 개념,활용 (0) | 2021.03.09 |