我無法在任何地方發現RDD內部如何執行重新分配?我知道你可以在RDD上調用重新分區方法來增加分區的數量,但是如何在內部執行它?Spark內部 - 重新分區是否加載內存中的所有分區?
假設,最初有5個分區並且他們有 -
- 第一分區 - 100個元件
- 第二分區 - 200個元件
- 第三分區 - 500個元件
- 第四分區 - 5000個元素
- 第5個分區--200個元素
部分分區傾斜,因爲它們是從HBase加載的,並且HBase中的數據未正確醃製,導致某些區域服務器的條目太多。
在這種情況下,當我們重新分區到10時,它會先加載所有分區,然後再進行混洗來創建10分區?如果完整的數據不能被加載到內存中,即所有分區不能一次加載到內存中呢?如果Spark不將所有分區加載到內存中,那麼它如何知道計數以及它如何確保將數據正確分區爲10個分區。