Spark Scala DataFrame GroupBy和OrderBy

时间:2019-10-17 20:56:06

标签: scala apache-spark-sql sql-order-by

我需要计算第一列和第二列中对的出现次数,并以降序排序。如果计数中有平局,请首先在第二栏中列出数字最小的那对。

以下内容适用,但决胜局部分除外。第一行应为_c1 2中的1,2,3 bc小于4,并且它们都具有相同的计数。如何按desc和c2 asc计数?

new_df.groupBy($"_c0",$"_c1").count().orderBy($"count".desc).limit(10).show()
+---+---+-----+
|_c0|_c1|count|
+---+---+-----+
|  1|  4|    3|
|  1|  2|    3|
|  4|  1|    2|
|  3|  1|    2|
|  3|  4|    2|
|  2|  1|    2|
|  2|  4|    1|
|  1|  7|    1|
|  7|  2|    1|
|  2|  7|    1|
+---+---+-----+

1 个答案:

答案 0 :(得分:3)

尝试将Desc的计数和asc的_c2添加到order by子句中。

new_df.groupBy($"_c0",$"_c1").count().orderBy($"count".desc, $"c2".asc).limit(10).show()

按照要应用规则的顺序执行此操作。在上面的示例中,将先按计数再按c2