语法
val newRdd = oldRdd.sortByKey([ascending], [numTasks])
ascending控制排序,true为升序,false为降序
numTasks表示排序后分区数
源码
def sortByKey(ascending : scala.Boolean = { /* compiled code */ }, numPartitions : scala.Int = { /* compiled code */ }) : org.apache.spark.rdd.RDD[scala.Tuple2[K, V]] = { /* compiled code */ }
作用
在一个(K,V)的RDD上调用,K必须实现Ordered接口,返回一个按照key进行排序的(K,V)的RDD
例子
package com.day1
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object oper {
def main(args: Array[String]): Unit = {
val config:SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")
// 创建上下文对象
val sc = new SparkContext(config)
// sortBykey算子
val arrayRdd = sc.makeRDD(Array((4,"刘六"),(2,"李四"),(3,"王五"),(1,"张三")))
val sortRdd = arrayRdd.sortByKey(true)
sortRdd.collect().foreach(println)
}
}
输入
(4,"刘六") (2,"李四") (3,"王五") (1,"张三")
输出
(1,张三)
(2,李四)
(3,王五)
(4,刘六)
示意图
无