在Spark中对普通RDD进行分区



我知道,对于PairRDD(键,值(,我们可以给出自己的分区方案,也可以使用默认的分区器(散列和范围(对其进行分区。但是,有没有一种方法可以通过使用我们自己的分区类来对普通的RDD进行分区?

谢谢!

需要继承抽象类org.apache.spark.Partitioner并提供两种方法的实现:

class WeekDayPartitioner extends Partitioner {
override def numPartitions: Int = 7
override def getPartition(key: Any): Int = key.asInstanceOf[LocalDate].getDayOfWeek
}
val partitioner = new WeekDayPartitioner()
myRdd.partitionBy(partitioner) //RDD[(LocalDate, String)]

最新更新