在 groupBy 和 agg 之后添加另一列

Add another column after groupBy and agg

我有一个 df 看起来像这样:

+-----+-------+-----+
|docId|vocabId|count|
+-----+-------+-----+
|    3|      3|  600|
|    2|      3|  702|
|    1|      2|  120|
|    2|      5|  200|
|    2|      2|  500|
|    3|      1|  100|
|    3|      5| 2000|
|    3|      4|  122|
|    1|      3| 1200|
|    1|      1| 1000|
+-----+-------+-----+

我想输出vocabId的最大数量和它所属的docId。我这样做了: val wordCounts = docwords.groupBy("vocabId").agg(max($"count") as ("count")) 得到这个:

+-------+----------+
|vocabId|    count |
+-------+----------+
|      1|      1000|
|      3|      1200|
|      5|      2000|
|      4|       122|
|      2|       500|
+-------+----------+

如何在前面添加docId??? 它应该看起来像这样(顺序不重要):

+-----+-------+-----+
|docId|vocabId|count|
+-----+-------+-----+
|    2|      2|  500|
|    3|      5| 2000|
|    3|      4|  122|
|    1|      3| 1200|
|    1|      1| 1000|
+-----+-------+-----+

您可以使用 docwords over count 和 vocabId 进行自我连接,如下所示

val wordCounts = docwords.groupBy("vocabId").agg(max($"count") as ("count")).join(docwords,Seq("vocabId","count"))