2

我正在从 redis 服务器读取句子并计算每个单词的出现次数。现在我想根据计数计算前 10 个单词。我有一个 Spout 可以从 Redis Server 读取句子,一个 Bolt 可以将句子分解成单词,一个 Bolt 可以计算单词。

根据计数找到前 10 个单词的方法应该是什么?

4

2 回答 2

0

假设如果你必须在最后 X 分钟做一次顶到,那么在每 X 分钟后用刻度元组配置你的 Bolt,直到然后继续计算 Bolt 中的单词。在遇到一个刻度元组发出前十个项目时,您可以将计数器保持在内存树映射中(取决于用例和数据大小)

现在假设您必须在 Redis 数据结构中使用大数据量维护计数的前 10 名,并根据您的需要在每 Y 秒后发出前 10 名。

对于刻度元组,请参阅 Michael 的博客 @ http://www.michael-noll.com/blog/2013/01/18/implementing-real-time-trending-topics-in-storm/

于 2013-06-20T03:26:25.303 回答
0

使用SortedSet将单词的频率写入 Redis 。对于 Storm 处理的每个单词,它使用ZINCRBY在 Redis 中增加该单词的计数器。

SortedSet 中的值是按值排序的,因此您可以像这样使用ZREVRANGE检索前十名。

ZREVRANGE myset 0-9 WITHSCORES
于 2014-01-19T15:51:16.940 回答