package inpv
import org.apache.spark.Partitioner
class PvPartitioner(numParts: Int) extends Partitioner {
override def numPartitions: Int = numParts
override def getPartition(key: Any): Int = {
val code = (key.toString().hashCode % numPartitions)
if (code < 0) {
code + numPartitions
} else {
code
}
}
override def equals(other: Any): Boolean = other match {
case p: PvPartitioner =>
p.numPartitions == numPartitions
case _ =>
false
}
override def hashCode: Int = numPartitions
}
spark 自定义partitioner
最新推荐文章于 2023-12-31 23:59:54 发布