如何在apache spark scala中对多列的数据进行排序?

时间:2016-04-19 11:49:49

标签: scala apache-spark

我有这样的数据集,我从csv文件中获取并使用scala将其转换为RDD。

+-----------+-----------+----------+
| recent    | Freq      | Monitor  |
+-----------+-----------+----------+
|        1  |       1234 |   199090|
|        4  |       2553|    198613|
|        6  |       3232 |   199090|
|        1  |       8823 |   498831|
|        7  |       2902 |   890000|
|        8  |       7991 |   081097|
|        9  |       7391 |   432370|
|        12 |       6138 |   864981|
|        7  |       6812 |   749821|
+-----------+-----------+----------+

如何对所有列上的数据进行排序?

由于

2 个答案:

答案 0 :(得分:1)

csv.sortBy(r => (r.recent, r.freq))或同等的人应该这样做

答案 1 :(得分:1)

假设您输入的RDF / DataFrame名为df

按降序对recent进行排序,FreqMonitor都按升序排序

import org.apache.spark.sql.functions._

val sorted = df.sort(desc("recent"), asc("Freq"), asc("Monitor"))

您也可以使用df.orderBy(...),它是sort()的别名。