Apache storm 如何在Storm中实现此拓扑?

Apache storm 如何在Storm中实现此拓扑?,apache-storm,Apache Storm,我是新来的,所以温柔点:-) 我想实现一个类似于中RollingTopWords拓扑的拓扑。这个想法是计算单词发出的频率。基本上,喷口随机发出单词,第一级螺栓计算频率并传递。扭曲之处在于,我希望只有在某个螺栓中的频率超过阈值时,螺栓才会传递单词的频率。因此,例如,如果单词“Nathan”在一个时间窗口内在一个螺栓上超过了5次出现的阈值,那么所有螺栓将开始超过“Nathan”的频率 我想做的是有另一层螺栓,它将有一个单词列表,已经通过了一个门槛。然后,他们将接收来自前一层螺栓的单词和频率,并仅在它

我是新来的,所以温柔点:-)

我想实现一个类似于中RollingTopWords拓扑的拓扑。这个想法是计算单词发出的频率。基本上,喷口随机发出单词,第一级螺栓计算频率并传递。扭曲之处在于,我希望只有在某个螺栓中的频率超过阈值时,螺栓才会传递单词的频率。因此,例如,如果单词“Nathan”在一个时间窗口内在一个螺栓上超过了5次出现的阈值,那么所有螺栓将开始超过“Nathan”的频率

我想做的是有另一层螺栓,它将有一个单词列表,已经通过了一个门槛。然后,他们将接收来自前一层螺栓的单词和频率,并仅在它们出现在列表中时传递它们。显然,该列表必须在整个螺栓层上同步

这是个好主意吗?实施它的最佳方式是什么

更新:我希望实现的是通信最小化的情况,即我的用例中的每个节点都由一个喷口和一个连接的螺栓模拟,该螺栓进行局部计数。我希望这个插销只发出超过阈值的单词,无论是在插销本身还是在另一个插销中。因此,每个螺栓都必须有一个超过阈值的单词列表。将有一个中央存储库,它将保存超过阈值的单词列表,并将与螺栓进行通信以传递该信息


实现这一点的最佳方式是什么?

这应该不会太复杂。在达到阈值之前不要发出单词,同时将它们存储在HashMap中。这只是一个if-else语句


关于同步-我认为你不需要它,因为当你遇到这种问题(计算单词)时,你希望一个且只有一个任务接收特定单词。接收单词的任务(例如“Nathan”)将是唯一发出其频率的任务。为此,您应该使用。

谢谢。我试图避免这种解决方案,因为我希望实现一种通信最小化的情况,即我的用例中的每个节点都由一个喷口和一个连接的螺栓模拟,该螺栓进行局部计数。我希望这个插销只发出超过阈值的单词,无论是在插销本身还是在另一个插销中。将有一个中央存储库,它将保存超过阈值的单词列表,并将与螺栓进行通信以传递该信息。@Johnny我同意filip的观点,您应该使用
.fieldsGroup(“spout”),new Fields(“word”)
。这将使同一个词始终指向同一个螺栓。中央存储库的问题在于它不是分布式的,并且不会最小化通信,而这正是您试图避免的。