如何在风暴爬虫中使用 python 螺栓?

how to use python bolt in storm crawler?

我有一些用 python 编写的图像分类器。网上有很多例子,描述了在使用 from stdin/stdout 的 storm bolt 中使用 python 的方法。我想将我的 python 图像分类器与风暴爬虫拓扑集成。可不可以?

谢谢

绝对有可能,几年前这样做是为了将带有 Tensorflow 的图像分类器集成到 StormCrawler 拓扑中。不记得细节,代码留给了我为其编写的客户,但它基于 the multilang protocol,不幸的是不记得细节。

是的,你可以。如果您使用的是 Flux,这是如何在拓扑中使用 python 螺栓的示例定义:

  - id: "pythonbolt"
    className: "org.apache.storm.flux.wrappers.bolts.FluxShellBolt"
    constructorArgs:
      - ["python", "/absolute/path/to/your/python_file.py"]
      # declare your outputs here:
      - ["output0", "output1", "output2"]
    parallelism: 1

注意: 确保向 python 螺栓发送简单的数据类型(如字符串、整数等)。不是 java 数据类型,否则会抛出错误! 首先下载storm.py表格

here

这是一个示例 python 螺栓:

import storm

class SampleBolt(storm.BasicBolt):
    # Initialize this instance
    def initialize(self, conf, context):
        self._conf = conf
        self._context = context

    def process(self, tup):
        # Some processes here, and then emit your outputs.
        storm.emit([output0, output1, output2])

# Start the bolt when it's invoked
SampleBolt().run()