我已经获得了一个键/值对,并将其分类为一个新的JavaPairRDD
现在,我需要从中选择前5个元素,即获得一个包含前5个元素的新JavaPairRDD。
我该怎么做?
有没有比使用flatMap更简单的方法,因为它似乎是不必要的额外工作?
谢谢!
答案 0 :(得分:2)
假设您不关心订单,可以使用RDD.take(5)
获取RDD中的前5个元素。
答案 1 :(得分:1)
要获得顶部(或底部)项目(并回答您提出的问题),您可以使用:
.takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T]
答案 2 :(得分:0)
使用获取优先级队列的最小值的语法:
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]())
注意强>: (top反转顺序并在内部调用takeOrdered)
def top(num: Int)(implicit ord: Ordering[T]): Array[T] = takeOrdered(num)(ord.reverse)