package actions
import org.apache.spark.
object sam
}class
mypartitioner
(num:int)
extends
partitioner
}
還有一種分割槽器就是rangepartitioner(範圍分割槽器),思想是用水塘抽樣演算法,保證每條資料被抽取的概率相等,抽取math.min(20*partition,1e6)資料量,根據此樣本確定邊界資料
,如[10,20,30,40],小於10的放在0分割槽,對應邊界資料10的索引0。
範圍分割槽器
目的:避免資料傾斜
知道rdd資料的分布情況後,指定合適的分割槽數
原理: 『水塘抽樣演算法』抽樣乙個樣本,確定』邊界陣列』 [10,20,30],然後根據key確定所在分割槽
自定義分割槽器外掛程式
官方只提供了取模分割槽器,如果有其他分割槽需求,可通過自定義分割槽外掛程式擴充套件。自定義分割槽器外掛程式需要實現以下兩個介面 partitioner 基類basepartitioner 說明 維護配置 訪問對話方塊 執行時分配資料到分割槽 stepdialoginte ce 基類basestepd...
Kafka自定義分割槽器
kafka通過生產者kafkaproducer的send 方法將訊息傳送到broker中,但在傳送過程中需要經過 interceptor 序列化器 serializer 和分割槽器 partitioner 的一系列作用之後才能被真正地發往broker。訊息在經過序列化後需要確定它發往的分割槽,如果訊...
Spark自定義排序
在這之前,我們先準備一些資料,使用rdd存放 獲得sparkcontext val conf sparkconf newsparkconf setmaster local 2 val sc newsparkcontext conf val rdd sc.parallelize list 公尺家雷射投...