我在sort
订单中尝试array
以下descending
,但无法弄清楚如何。
我尝试使用.sort
和.sortWith
,但它们似乎不适用于arrays
?
val result = postIdCount.withFilter(_._2 > 5).map(_._1.toInt)
result.collect
Array[Int] = Array(41, 974, 662, 9554, 116, 4942, 410, 2269, 5443, 5357, 9435, 2293, 266, 711, 441, 61, 3738, 22, 6318, 8390, 497, 19, 9364, 412, 893, 334, 9000, 678, 313, 253, 979, 842, 4914, 2651, 6547, 6576, 1159, 5224, 1107, 52, 810, 361, 694, 739, 904, 5706, 422, 778, 9818, 758, 130, 265, 6107, 155, 2618, 8941, 8963, 834, 326, 731, 2368, 430, 1253)
有谁知道我怎么做到这一点?
感谢您的帮助。
编辑:这是我到目前为止所做的:
当我尝试添加:
val result = postIdCount.withFilter(_._2 > 5).map(_._1.toInt).sorted(Ordering[Integer].reverse)
我收到错误说:
error: value sorted is not a member of org.apache.spark.rdd.RDD[Int]
答案 0 :(得分:1)
postIdCount.withFilter(_._2 > 5).map(_._1.toInt)
为您org.apache.spark.rdd.RDD
提供Array
。
尝试
postIdCount.withFilter(_._2 > 5).map(_._1.toInt).collect.sorted(Ordering[Int].reverse)`
collect
函数将数据集的所有元素作为数组返回。但是这会将所有数据收集到spark集群中的一台机器上。
答案 1 :(得分:1)
val sorted = postIdCount
.withFilter(_._2 > 5)
.map(_._1.toInt)
.sortBy(identity, ascending = false)
这将返回已排序的RDD[Int]
。
答案 2 :(得分:0)
val sortedArray = array.sorted
答案 3 :(得分:0)
val sorted = array.sorted(Ordering[Int].reverse)