Joswlv

기본 RDD연산들(트랜스포메이션, 액션)

2017-02-26

기본 RDD 트랜스포메이션

{1,2,3,3}을 가지고 있는 RDD에 대한 RDD 트랜스포메이션

함수 이름 용도 결과
map() RDD의 각 요소에 함수를 적용하고 결과 RDD를 되돌려준다. rdd.map(x -> x+1) {2,3,4,4}
flatMap() RDD의 각 요소에 함수를 적용하고 반환된 반복자의 내용들로 이루어진 RDD를 되될려준다. 종종 단어 분해를 위해 쓰인다. rdd.flatMap(x -> x.to(3)) {1,2,3,2,3,3}
filter() filter()로 전달된 함수의 조건을 통과한 값으로만 이루어진 RDD를 되돌려 준다. rdd.filter(x -> x != 1) {2,3,3}
distinct() 중복제거 rdd.distinct() {1,2,3}
sample(withReplacement, fraction, [seed]) 복원 추출(withReplacement-true)이나 비복원 추출로 RDD에서 표본을 뽑아낸다. rdd.sample(false, 0.5) 생략

{1,2,3}과 {3,4,5}를 가진 두 RDD에 대한 트랜스포메이션

함수 이름 용도 결과
union() 두 RDD에 잇는 데이터들을 합한 RDD를 생성한다. rdd.union(other) {1,2,3,3,4,5}
intersection() 양쪽 RDD에 모두 있는 데이터들만을 가진 RDD를 반환한다. rdd.intersection(other) {3}
subtract() 한 RDD가 가진 데이터를 다른 쪽에서 삭제한다 rdd.subtract(other) {1,2}
cartesian() 두 RDD의 카테시안 곱 rdd.cartesian(other) {{1,3},{1,4},{1,5} … ,{3,5}}


기본 RDD 액션

{1,2,3,3}을 갖고 있는 RDD에 대한 기본 액션

함수 이름 용도 결과
collect() RDD의 모든 데이터요소 리턴 rdd.collect() {1,2,3,3}
count() RDD의 요소 개수 리턴 rdd.count() 4
countByValue() RDD에 있는 각 값의 개수 리턴 rdd.countByValue() {{1,1},{2,1},{3,2}}
take(num) RDD의 값들 중 num개 리턴 rdd.take(2) {1,2}
top(num) RDD의 값들 중 상위 num개 리턴 rdd.top(2) {3,3}
takeOrdered(num(ordering) 제공된 ordering 기준으로 num개 값 리턴 rdd.takeOrdered(2)(myOrdering) {3,3}
takeSample(withReplacement, num, [seed]) 무작위 값을 리턴 rdd.takeSample(false,1) 생략
reduce(func) RDD의 값들을 병렬로 병합 연산한다. rdd.reduce((x,y) -> x+y) 9
fold(zero)(func) reduce()와 동일하나 제로 밸류를 넣어준다. rdd.fold(0)(x,y) -> x+y 9
aggregate(zeroValue)(seqOP, combOp) reduce()와 유사하나 다른 타입을 리턴한다. rdd.aggregate((0,0))((x,y) -> (x._1 + y, x._2 +1), (x,y) -> (x._1 + y._1, x._2 + y._2)) {9,4}
foreach(func) RDD의 각값에 func을 적용한다. rdd.foreach(func) 없음

Comments