0

我正在尝试使用 shell bolt 使用 Python bolt 运行 Apache Storm 拓扑。在我的 Bolt 中,我使用的是安装在 /home/labuser/anaconda3/bin/python 中的 spacy 库。但是,当我运行拓扑风暴时显示错误消息模块未找到 spacy。调试后我发现storm正在使用位于 /usr/bin/python 的python 2.7。

我的问题是以下问题的扩展, 在风暴中,如何指定特定版本的 python

根据上述问题的答案,我尝试使用 super("home/labuser/anaconda3/bin/python", "splitsentence.py"); 创建 shell bolt 构造函数,但风暴继续在 /usr/bin/python 目录中获取 2.7。

我需要知道如何告诉 Storm 在 home/labuser/anaconda3/bin/python 目录中为我的 shell 螺栓使用 python3。

4

1 回答 1

0

事实证明,在实现的 shell bolt的构造函数中指定使用哪个 python 版本是答案。我最初尝试过这个,但由于其他一些构建问题,它失败了。我做了一个全新的构建,现在它可以工作了。

public static class SplitSentence extends ShellBolt implements IRichBolt {

    public SplitSentence() {
      super("home/labuser/anaconda3/bin/python", "splitsentence.py");
    }

    @Override
    public void declareOutputFields(OutputFieldsDeclarer declarer) {
      declarer.declare(new Fields("word"));
    }

    @Override
    public Map<String, Object> getComponentConfiguration() {
      return null;
    }
  }

多亏了这个答案 在风暴中,如何指定特定版本的python

如果您有任何其他问题,请务必阅读 http://storm.apache.org/releases/2.0.0-SNAPSHOT/Multilang-protocol.html

于 2018-07-19T07:35:39.580 回答