在spark中划分正常rdd

pexxcrt2  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(483)

我知道对于pairrdd(key,value),我们可以给出自己的分区方案,或者使用默认的分区器(hash和range)对其进行分区。但是,有没有一种方法可以通过使用我们自己的分区类来对普通rdd进行分区呢?
谢谢!

wb1gzix0

wb1gzix01#

需要继承抽象类 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)]

相关问题