Как отсортировать результаты после запуска кода в Spark - PullRequest
1 голос
/ 15 мая 2019

Я создал несколько строк кода 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 ]

4 голосов
/ 15 мая 2019

Если вы хотите отсортировать свой первый набор данных по второму полю, вы можете использовать следующий код:

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))
2 голосов
/ 15 мая 2019

Вы можете просто позвонить wordCounts.sortBy(_._2, false).Метод sortBy из RDD принимает в качестве второго аргумента логическое значение, которое указывает, должен ли результат сортироваться по возрастанию ( true - по умолчанию) или по убыванию ( false).

textFile
   .flatMap(_.split(" "))
   .map(word => (word, 1))
   .reduceByKey(_ + _)
   .sortBy(_._2,  false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...