2016-04-13 44 views
1

我已经从this blog使用的代码(正常工作):阿帕奇风暴:InvalidTopologyException(MSG:组件:[X]由不存在的组件订阅[Y]

TopologyBuilder builder = new TopologyBuilder(); 
builder.setSpout("line-reader-spout", new LineReaderSpout()); 
builder.setBolt("word-spitter", new WordSpitterBolt()).shuffleGrouping("line-reader-spout"); 
builder.setBolt("word-counter", new WordCounterBolt()).shuffleGrouping("word-spitter"); 

LocalCluster cluster = new LocalCluster(); 
cluster.submitTopology("HelloStorm", config, builder.createTopology()); 

但是,当我调整它有两个出水口,其读取线,送线两个word-spitter螺栓,最后将结果发送到一个word-counter螺栓,一个无效的拓扑结构的异常被抛出。

我调整了代码

TopologyBuilder builder = new TopologyBuilder(); 

builder.setSpout("line-reader-spout", new LineReaderSpout()); 
builder.setSpout("line-reader-spout2", new LineReaderSpout());   
builder.setBolt("word-spitter", new WordSpitterBolt()).shuffleGrouping("line-reader-spout"); 
builder.setBolt("word-spitter2", new WordSpitterBolt()).shuffleGrouping("line-reader-spout2"); 
builder.setBolt("word-counter", new WordCounterBolt(),2).shuffleGrouping("word-spitter").shuffleGrouping("word-splitter2"); 
LocalCluster cluster = new LocalCluster(); 
cluster.submitTopology("HelloStorm", config, builder.createTopology()); 

拓扑结构有什么问题?我没有看到任何不正常的流量。 word-spitter2在实际创建时如何不存在?

6661 [主要] INFO b.s.d.nimbus - [REQ 1]从Access:主要: OP:submitTopology 6718 [主要] WARN b.s.d.nimbus - 拓扑提交 异常。 (错误代码='HelloStorm')#InvalidTopologyException InvalidTopologyException(msg:Component:[word-counter]从 不存在的组件[word-splitter2]订阅)6721 [main]错误 oassoazsNIOServerCnxnFactory - Thread Thread [main,5 ,main]已死亡 backtype.storm.generated.InvalidTopologyException at backtype.storm.daemon.common $ validate_structure_BANG_.invoke(common.clj:160) 〜[storm-core-0.10.0.jar:0.10.0] at backtype.storm.daemon.common $ system_topology_BANG_.invoke(common.clj:299) 〜[storm-core-0.10.0.jar:0.10.0] at backtype.storm.daemon.nimbus $ fn__6583 $ exec_fn__1236__auto __ $ reify__6598.submitTopologyWithOpts(nimbus.clj:1091) 〜[storm-core-0.10.0.jar:0.10.0] at backtype.storm.daemon.nimbus $ fn__6583 $ exec_fn__1236__auto __ $ reify__6598.submitTopology(nimbus.clj:1119) 〜[storm-core-0.10.0.jar:0.10.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 〜[:?1.8.0_73]在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 〜[:?1.8.0_73]在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java :43) 〜[?:1.8.0_73] at java.lang.reflect.Method.invoke(Method.java:497) 〜[?:1.8.0_73] at clojure.lang.Reflector.invokeMatchingMethod(Reflector。 java:93) 〜[clojure-1.6.0.jar :?] at clojure.lang.Reflector.invokeInstanceMethod(R backfont.storm.testing $ submit_local_topology.invoke(testing.clj:276) 〜[storm-core-0.10.0.jar:[eflector.java:28) 〜[clojure-1.6.0.jar :?] 0.10.0] at backtype.storm.LocalCluster $ _submitTopology.invoke(LocalCluster.clj:43) 〜[storm-core-0.10.0.jar:0.10.0] at backtype.storm.LocalCluster.submitTopology(Unknown源) 〜[风暴芯0.10.0.jar:0.10.0]在 com.spnotes.storm.HelloStorm.main(HelloStorm.java:36)〜[类/ :?]

回答

2

你有错字 - sp l itter2。

builder.setBolt(“word-spitter2”,new WordSpitterBolt())。shuffleGrouping(“line-reader-spout2”); builder.setBolt(“word-counter”,new WordCounterBolt(),2).shuffleGrouping(“word-spitter”)。shuffleGrouping(“word-splitter2”);