Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ApacheStorm与python混合拓扑-ModuleNotFoundError:没有名为';风暴';_Python_Apache Storm_Apache Storm Topology - Fatal编程技术网

ApacheStorm与python混合拓扑-ModuleNotFoundError:没有名为';风暴';

ApacheStorm与python混合拓扑-ModuleNotFoundError:没有名为';风暴';,python,apache-storm,apache-storm-topology,Python,Apache Storm,Apache Storm Topology,我正在尝试创建一个混合的storm拓扑,它使用基于Java的Spoot和基于python的bolt 对于基于python的bolt,我编写了一个Java包装器: class PythonBolt extends ShellBolt implements IRichBolt { public PythonBolt() { super("python", "C:\\somepath\\sample.py"); } @Override public v

我正在尝试创建一个混合的storm拓扑,它使用基于Java的Spoot和基于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;
    }
}
然后,我将它们放在一起,并尝试通过以下代码段运行:

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软件包?是否可以通过Anaconda安装它(我找不到该软件包)?

我不确定当您从IDE运行LocalCluster时,多语言支持是否适用于它。看见答案后面的对话中似乎提到了一种解决方法。

我不确定从IDE运行LocalCluster时,multilang支持是否适用于它。看见答案后面的对话中似乎提到了一个解决办法。

只针对未来的人们——信息非常准确。我只是错过了sample.py所在文件夹中的storm.py。只需将以下文件添加到该文件夹即可解决问题!
也可以通过本地集群运行此代码。

仅针对未来的用户-消息非常准确。我只是错过了sample.py所在文件夹中的storm.py。只需将以下文件添加到该文件夹即可解决问题! 也可以通过LocalCluster运行此代码

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]