Apachorm与python ModuleNotFound混合拓扑错误:没有名为“storm”的模块

2024-09-28 20:54:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个混合风暴拓扑,它使用基于Java的spout和基于python的bolt。在

对于基于python的bolt,我编写了一个Java包装器:

class PythonBolt extends ShellBolt implements IRichBolt {

    public PythonBolt() {
        super("python", "C:\\somepath\\sample.py");
    }
    @Override
    public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
    }

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

这就是我的样品.py看起来像:

进口风暴

^{pr2}$

然后我把它们放在一起,试着通过下面的片段运行:

public class SampleBolt {

    public static void main(String[] args) throws Exception {
        TopologyBuilder builder = new TopologyBuilder();
        builder.setSpout("Hello", new RawDataLevelSpout(), 12);
        builder.setBolt("World", new PythonBolt(), 12);

        Config config = new Config();
        config.setDebug(true);


        LocalCluster cluster = new LocalCluster();
        cluster.submitTopology("Hello-World-BaiJian", config, builder.createTopology());
        Utils.sleep(100000);
        cluster.killTopology("Hello-World-BaiJian");
        cluster.shutdown();
    }
}

所有的启动都是正确的,但是,我得到了以下例外:

import storm
ModuleNotFoundError: No module named 'storm'

    at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:94) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    at org.apache.storm.task.ShellBolt.prepare(ShellBolt.java:154) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    at org.apache.storm.executor.bolt.BoltExecutor.init(BoltExecutor.java:84) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    at org.apache.storm.executor.bolt.BoltExecutor.call(BoltExecutor.java:93) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    at org.apache.storm.executor.bolt.BoltExecutor.call(BoltExecutor.java:45) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    at org.apache.storm.utils.Utils$2.run(Utils.java:329) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]

关于如何克服这个问题有什么建议吗?如何安装python storm包?有没有可能通过水蟒安装它(我找不到软件包)?在


Tags: orgclientnewapachebuildersnapshotjavapublic
2条回答

只为未来的人们-信息非常精确。我只是错过了风暴.py在我的样品.py找到了。只需将以下文件:https://github.com/apache/storm/blob/v1.2.1/storm-multilang/python/src/main/resources/resources/storm.py添加到该文件夹就解决了这个问题! 也可以通过LocalCluster运行此代码。在

当您从IDE运行多语言支持时,我不确定多语言支持是否适用于LocalCluster。见https://stackoverflow.com/a/32085316/8845188。在回答之后的对话中似乎提到了一个解决办法。在

相关问题 更多 >