Получить максимальный срок и количество - PullRequest
0 голосов
/ 19 апреля 2020

Я сделал сокращение карты, которое подсчитывает сроки названий книг и подсчитывает их, используя scala. Я хочу вывести и термин, и число, но получу только число, используя:

println("max term :" +wordCount.reduce( (a,b)=> ("max", a._2 max b._2))._2)

Мне было интересно, как я также включил термин.

Спасибо

Пример:

(«The», 5) («Of», 8) («is», 10)…

мой текущий код дает мне максимальное число, но я не знаю как получить термин в.

Исходный код: val inputPR2Q1

val inputPR2Q1 =  sc.textFile("/root/pagecounts-20160101-000000")
val titlecolumn = inputPR2Q1.map(line => line.split(" ")(1))
val wordCount = titlecolumn.flatMap(line => line.split("_")).map(word => (word,1)).reduceByKey(_ + _);

Здесь я просто беру файл, содержащий названия книг с другими данными. Я беру только названия книг и делаю MapReduce для подсчета и суммирования каждого термина в заголовках отдельно.

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Используйте .sortBy с ascending=false и take(1) на СДР

sc.textFile("/root/pagecounts-20160101-000000").
map(line => line.split(" ")(1)).
flatMap(line => line.split("_")).
map(word => (word,1)).
reduceByKey(_ + _).
sortBy(_._2,ascending=false).
take(1)
2 голосов
/ 19 апреля 2020

Я бы посоветовал вам взглянуть на scalado c.
Вы можете просто использовать sortBy.

val (maxTerm, count) = wordCount.sortBy(_._2, ascending = false).take(1).head
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...