我知道对于pairrdd(key,value),我们可以给出自己的分区方案,或者使用默认的分区器(hash和range)对其进行分区。但是,有没有一种方法可以通过使用我们自己的分区类来对普通rdd进行分区呢?谢谢!
wb1gzix01#
需要继承抽象类 org.apache.spark.Partitioner 并提供两种方法的实现:
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)]
1条答案
按热度按时间wb1gzix01#
需要继承抽象类
org.apache.spark.Partitioner
并提供两种方法的实现: