如何从JavaPairRDD中选择前N个元素-Apache Spark



我获得了一个键/值对,并将其排序为一个新的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)

相关内容

  • 没有找到相关文章

最新更新