我获得了一个键/值对,并将其排序为一个新的JavaPairRDD
现在,我需要从中选择前5个元素,也就是说,获得一个新的JavaPairRDD,其中包含前5个元件。
我该怎么做?
有没有比使用flatMap更简单的方法,因为它似乎是不必要的额外工作?
谢谢!
假设您不关心顺序,则可以使用RDD.take(5)
来获取RDD中的前5个元素。
要获得顶部(或底部)项目(并回答您提出的问题),您可以使用:
.takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T]
使用获取优先级队列的最小值的语法:
assuming resultRdd = RDD[Double]
resultRdd.map (y => y.takeOrdered(x)(Ordering.by[Double]())
用于获取优先级队列的最大值的语法:
assuming resultRdd = RDD[Double]
resultRdd.map (y => y.top(x)(Ordering.by[Double]())
注意:(顶部反转订单并内部调用takeOrdered)
def top(num: Int)(implicit ord: Ordering[T]): Array[T] = takeOrdered(num)(ord.reverse)