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 을 동반하기 때문에 굉장히 무거운 연산이다.
되도록 사용하지 말 것을 권장함.
'Spark' 카테고리의 다른 글
[Spark] SparkWebUI 값들의 의미들 설명해주는 곳 (0) | 2019.10.01 |
---|---|
[Spark] executors 에 대한 자세한 설명 (0) | 2019.09.30 |
[Spark] Apache Spark on Kubernetes 기조 연설 (0) | 2019.09.10 |
[Spark] Spark WebUI DAG 이해하기 (0) | 2019.09.09 |
[Spark Streaming] Structured Streaming 명령어 및 예제 (0) | 2019.09.03 |