分区器作用:决定该数据在哪个分区
概览:
计算公式:x=key.hashcode%分区数,如果为正 x即该数据所在分区,如果为负 x+总分区数 即为当前key所在分区
触发情况:
reducebykey,groupbykey,join等算子会自动调用
通过Partitionby设置
原理:通过水塘抽样法确定key值分区后分区临界点,再划分
水塘抽样算法原理:https://www.cnblogs.com/strugglion/p/6424874.html
注意:采样中需要collect,所以会触发action
触发情况:sortbykey
基础Partitioner,设定分区数和分区方法
class MyPartitioner(n: Int) extends Partitioner{
override def numPartitions: Int = n
override def getPartition(key: Any): Int = {
val k = key.toString.toInt
k / 100
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章