【发布时间】:2016-04-28 18:28:20
【问题描述】:
我想在spark中做排名,如下:
输入:
5.6
5.6
5.6
6.2
8.1
5.5
5.5
排名:
1
1
1
2
3
0
0
0
输出:
Rank Input
0 5.5
0 5.5
1 5.6
1 5.6
1 5.6
2 6.2
3 8.1
我想知道如何在 spark 中对它们进行排序,并获得与上面列出的相同的排名。要求是:
- 排名从 0 而非 1 开始
- 这是一个包含数百万条记录的示例案例,其中一个分区可能非常大 - 我很欣赏有关如何使用内部排序方法进行排名的建议
我想在 scala 中执行此操作。有人可以帮我写代码吗?
【问题讨论】:
-
您期望有多少不同的分数?数千,数百万?
-
是否也传递了排名,或者您是否期望排名来自输入的排序?关于将排名应用于索引的评论让我不清楚
-
@AlbertoBonsanto 所以有多个案例,排名全部或仅排名前 10 或 20。我需要支持所有案例。所以答案是数百万。
-
如果数百万,那么您必须使用
sortBy:( -
@Bryce 抱歉。并不是说排名到索引,我的意思是说,输入值应该按排名排序,而不是像我们的例子中那样按顺序索引,它可以是 0,1,2 ...7。而是 0,0。必须支持极端情况,当两个输入冗余时,莫尔条纹不止一次会得到相同的排名。
标签: scala sorting apache-spark ranking bigdata