我们有一个专门用于处理社交媒体内容的系统。在我们的storm拓扑中,我们有一些需要处理的问题,比如情感分析、语言检测、垃圾邮件检测等等。在storm上准备的所有教程和示例中,我们已经看到了一个螺栓可以发出在declareOutputFields()方法中声明的元组字段。是否有任何选项发射当前螺栓的字段与输入元组?
例如,我有一个包含以下字段的输入元组:
& lt;
text: bla bla
username: Paul
日期:01.01.2013
来源:推特
>
我想将输出元组定义为:
& lt;
text: bla bla
用户名:保罗
日期:01.01.2013
来源:推特
朗:tr
>
注意,我希望我的螺栓不需要知道任何关于之前螺栓的输出元组模式。
谢谢。
您可以通过编写一个函数来实现类似的功能,该函数在给定某些输入时返回一个螺栓,而不是直接写入螺栓。您可以通过编写一个函数来参数化螺栓的创建,该函数将返回一个具有所需输出字段的螺栓对象。
显然,这必须在您部署拓扑时完成,因此它不能在运行时在流上是动态的,但它可以在启动时是动态的。就像
(defn make-bolt [bolt-name input-fields]
(defbolt bolt-name input-fields
...))
....
(topology
{} ;; spouts
{"a-bolt" (bolt-spec {"a-spout":shuffle}
(make-bolt bolt-name ["input" "tuple" "lang"]))))