增加处理和充实风暴

时间:2013-05-02 20:12:36

标签: stream apache-storm real-time-data

我们有一个专为处理社交媒体内容而设计的系统。在我们的风暴拓扑中,我们有一些要处理的螺栓,例如情绪分析,语言检测,垃圾邮件检测等。所有教程和示例都是在storm上编写的,我们已经看到一个bolt可以发出在declareOutputFields()方法中声明的元组字段。有没有选项用输入元组发出当前螺栓的字段?

例如,我有一个输入元组,其中包含以下字段:

<

text:bla bla

用户名:paul

日期:01.01.2013

源:微博

>

我想将输出元组定义为:

<

text:bla bla

用户名:paul

日期:01.01.2013

源:微博

郎:TR

>

请注意,我希望我的螺栓在bolt的输出元组架构之前不需要知道任何事情。

谢谢。

1 个答案:

答案 0 :(得分:0)

你可以通过编写一个函数来实现这样的事情,该函数返回给定一些输入的螺栓而不是直接写螺栓。通过编写一个函数来参数化螺栓的创建,该函数将返回一个带有所需输出字段的螺栓对象。

显然,这必须在部署拓扑时完成,因此在运行时它不能在流上动态,但在启动时它可以是动态的。像

这样的东西
(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"]))))
相关问题