Pyspark:在Dataframe中选择前k个条目,并随机断开关系

时间:2018-04-18 19:17:05

标签: apache-spark pyspark spark-dataframe

我有一个Dataframe,它记录每个用户的项目等级,其中可以有排名关系。对于那些带有关系的用户 - 项对,我想在选择前k个条目时为每个用户随机打破关系。

e.g。在这个例子中,k = 3。

输入:

+-------+-------+----+
| user  | item  |rank|
+-------+-------+----+
|      1|      1|   1|
|      1|      2|   2|
|      2|      1|   1|
|      2|      3|   1|
|      2|      2|   2|
|      2|      4|   2|
|      3|      2|   1|
|      3|      4|   1|
|      3|      1|   2|
|      3|      3|   2|
+-------+-------+----+

一个期望的输出如下:

+-------+-------+----+
| user  | item  |rank|
+-------+-------+----+
|      1|      1|   1|
|      1|      2|   2|
|      2|      1|   1|
|      2|      3|   1|
|      2|      2|   2|
|      3|      2|   1|
|      3|      4|   1|
|      3|      1|   2|
+-------+-------+----+

或者下面是好的,另外两种组合(这里未列出)也是如此

+-------+-------+----+
| user  | item  |rank|
+-------+-------+----+
|      1|      1|   1|
|      1|      2|   2|
|      2|      1|   1|
|      2|      3|   1|
|      2|      4|   2|
|      3|      2|   1|
|      3|      4|   1|
|      3|      1|   2|
+-------+-------+----+

浏览所有spark.sql.functions,找不到任何有用的东西,也没有找到Google。

感谢任何帮助!

0 个答案:

没有答案