第一天在Java中玩风暴,所以感谢任何帮助 - 我想用螺栓调用Python脚本来进行一些计算。这个Python脚本依赖于数字输入,我希望将其传递给这个螺栓。有ShellBolt
类,但我可以找到的所有示例都只调用没有任何参数的脚本(在构造函数中)。
如何调用Python脚本并传入依赖于输入元组的值?理想情况下,我可以从execute
生成一个shell进程吗?
答案 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会为你处理它。