Как я могу найти слово, которое имеет максимальное количество слов в топологии подсчета слов, используя топологию Trident? Вот ссылка на топологию подсчета слов Trident. https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/trident/TridentWordCount.java
Найдите слово, имеющее максимальное количество, используя топологию Trident
Ответы (1)
Trident API предоставляет операции max и maxBy, которые возвращают максимальное значение для каждого раздела пакета кортежей в потоке трезубца.
Итак, после подсчета количества каждого слова, как показано ниже:
Stream wordCountsStream = topology.newStream("spout1", spout).parallelismHint(16).each(new Fields("sentence"),
new Split(), new Fields("word")).groupBy(new Fields("word")).persistentAggregate(new MemoryMapState.Factory(),
new Count(), new Fields("count")).parallelismHint(16).newValuesStream();
Используйте maxBy, чтобы получить максимальное количество слов:
wordCountsStream.maxBy(new Fields("count"))
person
DP63
schedule
04.03.2019