使用三叉戟拓扑查找具有最大数量的单词

时间:2019-01-03 11:02:27

标签: apache-storm trident apache-storm-topology

如何在使用Trident拓扑的单词计数拓扑中找到具有最大计数的单词?这是三叉戟字数拓扑结构的链接。 https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/trident/TridentWordCount.java

1 个答案:

答案 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"))
相关问题