如何在Park rdd中显示自定义结果的前n个数?

bhmjp9jg  于 2021-05-16  发布在  Spark
关注(0)|答案(1)|浏览(424)
val sorting = sc.parallelize(List(1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,6,6,7,8,8,8,8,8))
sorting.map(x=>(x,1)).reduceByKey((a,b)=>a+b).map(x=>(x._1,"==>",x._2)).sortBy(s=>s._2,false).collect.foreach(println)    
output:
(8,==>,5)
(1,==>,3)
(2,==>,4)
(3,==>,3)
(4,==>,4)
(5,==>,3)
(6,==>,2)
(7,==>,1)

我只想显示前3个结果,并从结果中删除(逗号)。

pvcm50d1

pvcm50d11#

使用“take(3)”而不是“collect”获取前3个结果,然后手动清理输出:

sorting.map(x=>(x,1)).reduceByKey((a,b)=>a+b).sortBy(s=>s._2,false).map(x=>s"${x._1} ${x._2}").take(3).foreach(println)

8 5
2 4
4 4

相关问题