如何在shellbolt中调用元组上的脚本

时间:2015-09-04 02:06:45

标签: java python shell apache-storm

第一天在Java中玩风暴,所以感谢任何帮助 - 我想用螺栓调用Python脚本来进行一些计算。这个Python脚本依赖于数字输入,我希望将其传递给这个螺栓。有ShellBolt类,但我可以找到的所有示例都只调用没有任何参数的脚本(在构造函数中)。

如何调用Python脚本并传入依赖于输入元组的值?理想情况下,我可以从execute生成一个shell进程吗?

1 个答案:

答案 0 :(得分:1)

如果你仔细研究一下来自storm-starter的WordCountTopology(即splitsentence.py),你会发现Python脚本实现了一个带有一个以元组为输入的方法的类。这基本上是您在Python中实现的execute方法。 Storm会将每个传入元组的process调用execute

import storm

class SplitSentenceBolt(storm.BasicBolt):
    def process(self, tup):
        words = tup.values[0].split(" ")
        for word in words:
          storm.emit([word])

SplitSentenceBolt().run()

在后台,Storm分叉执行Pyhton脚本的新Java UNIXProcess。你不需要自己做任何事情。 Storm会为你处理它。