Spark自定義分割槽器

2021-10-07 14:22:53 字數 467 閱讀 1772

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 公尺家雷射投...