기본 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) | 없음 |