spark3.0教程:RDD行动算子takeOrdered()

说明

全局数据中按 升序 排序,取出前 n 个元素,组成数组并返回

应用场景

取 最小 TopN

声明

def takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T]

形参:

返回值:

  • 先排序,然后取前 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.takeOrdered(3)// 先排序,然后从rdd取前3个元素
res2.foreach(println)
sc.stop()

倒序-取最大值topn

推荐使用 top() 算子,详见链接

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.takeOrdered(3)(Ordering[Int].reverse)// 先排序,然后从rdd取前3个元素
res.foreach(println)
sc.stop()

原文出处:/show_1IX1O0GCy1eb.html