spark分割槽器

2021-10-01 03:49:34 字數 612 閱讀 5666

spark的分割槽器:

只有涉及到 key-value 型別的rdd才會用到分割槽器,因為分割槽是以key分割槽的

spark中分割槽器直接決定了rdd中分割槽的個數、rdd中每條資料經過shuffle過程屬於哪個分割槽和reduce的個數。

a、hashpartitioner(預設分割槽器) : hash分割槽器,將key的hash值除以分割槽個數,餘數是幾就分配到第幾個分割槽

弊端: 極端情況下,會導致資料傾斜

b、rangepartitioner:將一定範圍的數對映到某乙個分區內,盡量保證每個分割槽中的資料量的均勻,且 分割槽與分割槽之間是有序的,即乙個分割槽中的元素肯定都是比另乙個分區內的元素小或者大,但是分區內的元素不能保證順序

要求: key型別必須可排序

步驟:第一步: 先從整個rdd中抽取樣本資料,將樣本資料排序,計算出每個分割槽的最大key值,形成乙個array[key]型別的陣列變數rangebounds(邊界陣列)

c、自定義分割槽:

步驟:第一步:繼承partitioner,並且實現下面兩個方法

class mypartitioner(numpars:int) extends partitioner

}

Spark自定義分割槽器

package actions import org.apache.spark.object sam class mypartitioner num int extends partitioner 還有一種分割槽器就是rangepartitioner 範圍分割槽器 思想是用水塘抽樣演算法,保證每條資...

spark更改分割槽 Spark中的分割槽方法詳解

一 spark資料分割槽方式簡要 在spark中,rdd resilient distributed dataset 是其最基本的抽象資料集,其中每個rdd是由若干個partition組成。在job執行期間,參與運算的partition資料分布在多台機器的記憶體當中。這裡可將rdd看成乙個非常大的陣...

spark 的RDD分割槽

rdd的倆種建立方 1.從集合中建立rdd,spark主要提供了兩種函式 parallelize和makerdd 使用parallelize 從集合建立 scala val rdd sc.parallelize array 1,2,3,4,5,6,7,8 使用makerdd 從集合建立 scala ...