Spark API 之 top() 函数

java面试题网站:www.javaoffers.com

top函数是一个柯理化 函数,全写为:def top(num: Int)(implicit ord: Ordering[T]): Array[T] 并且带有 隐式参数ordering类型,说明 该方法中肯定会 用到排序, 参数num :  是排序后取出前 num个。

demo1:

val a = sc.parallelize(List(2,4,5,6,2,1,9,9,9,10,10,10,34,56),2)

a.top(3)

输出的结果为:

Array[Int] = Array(56, 34, 10)

demo2:

val a = sc.parallelize(List("a","a","a","c","c","d","e","z","0"),2)

a.top(3)

输出的结果:

Array[String] = Array(z, e, d)

demo3:

val a = sc.parallelize(List(("a",2),("b",2),("c",1),("d",34),("e",5)),2)

a.top(3)

输出结果为:

Array[(String, Int)] = Array((e,5), (d,34), (c,1))

总结: top(n) 函数会先将数据 排序(升序:从左向右 逐渐变大),然后从右向左取的 前n 个,tuple是 

按照k  进行升序。

这里讲一下降序的小技巧:

val a = sc.parallelize(List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

a.map(x=>-x).top(3).map(x=>-x)

输出为:Array[Int] = Array(1, 2, 3),注意字符串不能这样,

字符可以这样:

val a = sc.parallelize(List("a","b","d","c"))

a.sortBy(c => c, true).take(3),ture 为升序,false为降序,take函数为从左向右依次抽取3个

输出为: 

Array[String] = Array(a, b, c)

也可以直接,a.takeOrdered(3) 该函数为 先升序,然后从左向右依次抽取3个。

输出结果为:Array[String] = Array(a, b, c)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值