说明
底层调用 takeOrdered(),全局数据中按 降序 排序,取出前 n 个元素,组成数组并返回
应用场景
取 最大 TopN
声明
def top(num: Int)(implicit ord: Ordering[T]): Array[T]
形参:
num:前 num 个元素
ord:排序方式(隐式值)。隐式变量,写在函数的后面,详见 scala教程:隐式转换-隐式值(隐式变量)
返回值:
- 先排序,然后取前 n 个元素组成的 Array
例子
val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)
val rdd:RDD[Int] = sc.makeRDD( Array( 5,2,4,1,6,3 ),2 )
val res:Array[Int]=rdd.take(3)// 直接从rdd取前3个元素
res.foreach(println)
println("====================")
val res2:Array[Int]=rdd.top(3)// 先降序排序,然后从rdd取前3个元素
res2.foreach(println)
sc.stop()
倒序-取最小topn
推荐使用 takeOrdered() 算子,详见链接
val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)
val rdd:RDD[Int] = sc.makeRDD( Array( 5,2,4,1,6,3 ),2 )
val res:Array[Int]=rdd.top(3)(Ordering[Int].reverse)// 先升序排序,然后从rdd取前3个元素
res.foreach(println)
sc.stop()