在Spark中运行代码后如何对结果排序

时间:2019-05-15 09:17:14

标签: scala apache-spark

我创建了一些scala代码行来计算文本文件(在Spark中)中的单词数。这样的结果:

(further,,1)
(Hai,,2)
(excluded,1)
(V.,5)

我想知道我能否对结果进行如下排序:

(V.,5)
(Hai,,2)
(excluded,1)
(further,,1)

下面显示的代码,谢谢您的帮助!

val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
    wordCounts.collect()
    wordCounts.saveAsTextFile("./WordCountTest")

2 个答案:

答案 0 :(得分:4)

如果要按第二个字段对第一个数据集进行排序,则可以使用以下代码:

val wordCounts = Seq(
    ("V.",5),  
    ("Hai",2),
    ("excluded",1),
    ("further",1)
)

val wcOrdered = wordCounts.sortBy(_._2).reverse

产生以下结果

wcOrdered: Seq[(String, Int)] = List((V.,5), (Hai,2), (further,1), (excluded,1))

答案 1 :(得分:2)

您可以直接致电wordCounts.sortBy(_._2, false)。来自 RDD 的方法 sortBy 以布尔值作为第二个参数,它告诉结果是升序( true -默认值)还是降序(< em> false )。

textFile
   .flatMap(_.split(" "))
   .map(word => (word, 1))
   .reduceByKey(_ + _)
   .sortBy(_._2,  false)