spark 의 rdd 혹은 dataframes 에서 각 서버로 나눠진 partition 들의 사이즈를 확인하려면 아래 명령어를 사용한다.

 

[myObject].mapPartitions{it=>Iterator(it.toSeq.size)}.collect.toSeq

예)

* mapPartitions 는 Transformation 과 action 중, action 연산이다.

 

위의 예제의 경우, 총 6개의 partition 이 있고 각각의 크기는 보는 바와 같다.

 

여기서 저 partition 들의 사이즈를 모두 동일하게 rebalancing 해주려면 repartition 해야 한다.

 

val [name] = [myObject].repartition(4)

예)

* repartition 은 Transformation 연산이다.

 

위의 예제의 경우, repartition(4) 라고 파라미터를 4로 주었는데 이것은 파티션 하고 싶은 숫자이다.

 

아래 보는 것 처럼 똑같은 크기의 4개 파티션으로 나뉜 것을 볼 수 있다.

 

repartition 은 모든 노드의 데이터들이 뒤섞이게 되는 shuffle 을 동반하기 때문에 굉장히 무거운 연산이다.

 

되도록 사용하지 말 것을 권장함.

 

+ Recent posts