使用 Trident 拓扑查找具有最大计数的单词

Posted

技术标签:

【中文标题】使用 Trident 拓扑查找具有最大计数的单词【英文标题】:Find the word having the maximum count using a Trident topology 【发布时间】:2019-01-03 11:02:27 【问题描述】:

如何使用 Trident 拓扑找到字数拓扑中计数最多的单词?这是 Trident 字数统计拓扑的链接。 https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/trident/TridentWordCount.java

【问题讨论】:

【参考方案1】:

Trident API 提供 ma​​xma​​xBy 操作,它们在 trident 流中的一批元组的每个分区上返回最大值。

所以在计算每个单词的计数后,如下所示:

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();

使用 ma​​xBy 来获取具有最大计数的单词:

 wordCountsStream.maxBy(new Fields("count"))

【讨论】:

以上是关于使用 Trident 拓扑查找具有最大计数的单词的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Apache Storm Trident 拓扑中的错误“组件:[x] 订阅不存在的组件 [y]”

Mongoose - 查找具有最大计数的文档

您将如何使用 T-SQL 获得满足条件的顺序/连续记录的最大/最大计数

Apache Storm Trident - 动态创建拓扑

P4017 最大食物链计数 (拓扑排序)

luogu_4017题解最大食物链计数(拓扑排序)