如何在使用Trident拓扑的单词计数拓扑中找到具有最大计数的单词?这是三叉戟字数拓扑结构的链接。 https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/trident/TridentWordCount.java
答案 0 :(得分:0)
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"))