风暴和停止词

w8biq8rn  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(209)

我是风暴框架的新手(https://storm.incubator.apache.org/about/integrates.html),我用我的代码在本地进行测试,我想如果我删除了停止词,它会表现得很好,但我在网上搜索,我看不到任何在storm中删除停止词的例子。

uujelgoq

uujelgoq1#

如果停止词列表的大小足够小,可以容纳在内存中,那么最简单的方法就是使用storm实现简单地过滤元组 Filter 他知道那个名单。这个 Filter 如果停止词列表随着时间的推移而变化,则可以每隔一段时间轮询db以获取最新的停止词列表。
如果停止词列表的大小较大,则可以使用 QueryFunction ,从拓扑中调用 stateQuery 功能,它将:
接收一批要检查的元组(例如一次10000个元组)
从它们的内容构建一个查询,并在持久性中查找相应的停止词
为每个元组附加一个布尔值,指定每个元组要处理的内容
+添加 Filter 然后根据布尔值进行过滤。
如果你喜欢冒险:
另一种更快的方法是使用bloom过滤器近似。我听说algebird是要提供这种功能和目标都烫伤和风暴(有多酷?),但我不知道它有多稳定,也没有任何经验,在实际插入风暴(也许周日,如果下雨…)。
此外,级联(与storm没有直接关系,但在map reduce之上有一组非常相似的原始抽象)在本教程中建议了一种基于左连接的方法。这样的连接存在于storm中,右分支可能会被fixedbatchspout每次发送所有停止词,甚至是一个定制的spout每次都从persistence中读取最新版本的停止词列表,所以这可能也会起作用?也许 吧?这也假设停止词列表的大小相对较小。

相关问题