我有一个键,值对,我需要按值降序返回前10个元素。正如您可以从下面的实际输出中看到的那样,它通过键而不是值(在本例中是通过ascii字符代码)为我提供了最高值。
例如:
//Input:
(the, 5),
(is, 10),
(me, 1)
//Expected Output:
(is, 10),
(the, 5),
(me, 1)
//Actual Output:
(the, 5),
(me, 1),
(is, 10)
我的函数:
def getActiveTaxis(taxiLines: RDD[Array[String]]): Array[(String, Int)] = {
// Removing set up code for brevity
val counts = keys.map(x => (x, 1))
val sortedResult = counts.reduceByKey((a, b) => a + b).sortBy(_._2, false)
sortedResult.top(10)
}
你应该使用take()函数而不是top()。
根据指定的implicit Ordering[T]
对RDD进行排序后,take()
将返回top N个元素,而top()
将返回top N个元素。
您可以在这里参考top()
的实现。