Один из вариантов - запустить два задания MR:
job1 map
: испускает ["To",1]
job1 reduce
: находит количество по назначению и выводит ["To", count]
job2 map
: испускает выводпредыдущее задание (как [count, "To"]
или ["To", count]
)
job2 reduce
(число редукторов = 1): сортирует и выводит 20 строк с самыми большими значениями count
Для таких задач запроса, как эта, предпочтительно использовать SQL-подобный механизм запросов, похожий на Apache Hive.Hive преобразует запрос в 2 задания Map-Reduce, указанные выше.