본문 바로가기
대학원 공부/computer science

Spark : Pair RDD

by 월곡동로봇팔 2019. 12. 19.

Pair RDD

정의

key/value pair를 포함하는 RDD를 Pair RDD라 한다.

장점

key를 parallel 하게 배치하여 연산이 가능하고, network를 통해 data를 regroup 할 수 있다.

결국 key를 통해 재배치 할 수 있다는 말이다.

 

ex ) reduceByKey(), join()

reduceByKey는 key에 따라 value 값을 재설정, 집약할 수 있다.

join도 key를 보고 table을 정리할 수 있다.

 

많은 format들은 key/value data를 가진 pair RDD로 바로 return한다.

memory에서 pair RDD를 만들기위해서는 SparkContext.parallelize를 해야한다. (sc = SparkContext(), sc.parallelize)

 


Transformation

Pair RDD를 쓰는 방법

pair RDD는 Transformation을 통해 standard RDD로 바꿔서 쓸 수 있다.

 

pair RDD는 tuple로 되어있기 때문에, 우리는 tuple을 개인 element로 바꿔주는 function을 거쳐야 한다.

ex ) reduceByKey, groupByKey(), Keys(), values()

 

reduceByKey는 key끼리 value를 모두 combine한 후 더한다.

groupByKey는 key끼리 value를 모두 모으는 것은 동일하지만, combine만해서 list로 넣는다.

 

만약 skewed data (비대칭 data) 라고 한다면, groupByKey는 효과적이지 못하다.

그 이유는 groupByKey는 한 key에 대한 value가 엄청나게 모이기 때문에, traffic이 발생한다.

따라서 reduceByKey를 combiner 처럼 모아주고 하는 편이 훨씬 효과적이다.

 

 

 

 

 

 

 

values, sortByKey
subtractByKey, join

subtractByKey는 other의 key가 rdd에 존재한다면, rdd의 해당 element를 빼버린다.

a.join(b)는 b에 해당하는 key만 내부조인으로 결과값을 낸다.

 


Aggregation (집합)

dataset들이 key/value 로 표현될 때, 통계학에서는 같은 key로 묶는 것을 선호한다.

따라서 Spark도 같은 key를 가진 value들은 combine하는 비슷한 operation들을 가지고 있다. 이러한 작업은 Aggregation.

 

Aggregation

key value가 있는 값을 mapValues를 통해 튜플형태로 바꾼 후, reduceByKey를 통해 같은 key끼리 value들을 더한다.


Joins

join연산 방법
left, right joiner

y. leftOuterJoin(x)는 일단 y성분을 diagram에서 왼쪽로 한다. x 성분은 diagram에서 오른쪽으로 한다.


Sorting

 

sort
sortByKey

 

'대학원 공부 > computer science' 카테고리의 다른 글

Spark : Job Scheduler  (0) 2019.12.19
Spark : Caching & Serialized  (0) 2019.12.19
Spark : Function 예시  (0) 2019.12.19
Spark : File format, Compression, File System, Accumulator  (0) 2019.12.19
Spark : Partitioning  (0) 2019.12.18

댓글