【问题标题】:How to show top N number of results with customization in spark rdd?如何在 spark rdd 中通过自定义显示前 N 个结果?
【发布时间】:2020-12-07 18:41:23
【问题描述】:
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 个结果并从结果中删除 ,(逗号)。

【问题讨论】:

  • 摆脱.map(x=>(x._1,"==>",x._2))。编写您自己的单独函数,以您希望的方式打印一对。代替foreach 中的println,放入您的自定义打印函数。

标签: sorting apache-spark pyspark rdd


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多