spark3.0教程:RDD行动算子 top() 作者:马育民 • 2025-12-08 21:57 • 阅读:10003 # 说明 底层调用 `takeOrdered()`,全局数据中按 **降序** 排序,取出前 n 个元素,组成数组并返回 ### 应用场景 取 **最大** TopN # 声明 ``` def top(num: Int)(implicit ord: Ordering[T]): Array[T] ``` **形参:** - num:前 num 个元素 - ord:排序方式(隐式值)。隐式变量,写在函数的后面,详见 [scala教程:隐式转换-隐式值(隐式变量)](https://www.malaoshi.top/show_1IX1L1LawtfG.html "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()` 算子,详见[链接](https://www.malaoshi.top/show_1IX1O0GCy1eb.html "链接") ``` 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() ``` 原文出处:http://www.malaoshi.top/show_1GW2N3sn5PTI.html