2016-04-13 6 views
1

ich den Code aus this blog verwendet haben (was gut funktioniert):Apache Storm: InvalidTopologyException (msg Komponente: [x] abonniert von nicht existierenden Komponente [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()); 

Aber wenn ich es zwicken zwei Tüllen haben, die Zeilen zu lesen, um die Leitungen zu zwei word-spitter Schrauben senden und schließlich die Ergebnisse zu einer einzigen word-counter Schraube senden, die Ausnahme einer ungültigen Topologie geworfen wird.

Mein Code gezwickt

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()); 

Was ist falsch an der Topologie? Ich sehe keinen falschen Fluss. Wie kann word-spitter2 nicht vorhanden sein, wenn es tatsächlich erstellt wird?

6661 [main] INFO b.s.d.nimbus - [req 1] Zugang aus: Haupt: op: submitTopology 6718 [main] WARN b.s.d.nimbus - Topologie Vorlage Ausnahme. (Topologie name = 'HelloStorm') #InvalidTopologyException InvalidTopologyException (msg: Komponente: [word-counter] abonniert von nicht vorhandene Komponente [word-splitter2]) 6721 [main] FEHLER oassoazsNIOServerCnxnFactory - Thread Thread [main, 5 , Haupt] starb backtype.storm.generated.InvalidTopologyException um backtype.storm.daemon.common $ validate_structure_BANG_.invoke (common.clj: 160) ~ [storm-core-0.10.0.jar: 0.10.0] um backtype.storm.daemon.common $ system_topology_BANG_.invoke (common.clj: 299) ~ [Sturm-Core-0.10.0.jar: 0.10.0] bei backtype.storm.daemon.nimbus $ fn__6583 $ exec_fn__1236__auto __ $ reeify__6598.submitTopologyWithOpts (nimbus.clj: 1091) ~ [storm-core-0.10.0.jar: 0.10.0] bei backtype.storm.daemon.nimbus $ fn__6583 $ exec_fn__1236__auto __ $ verify__6598.submitTopologie (nimbus.clj: 1119) ~ [storm-core-0.10.0.jar: 0.10.0] um sun.reflect.NativeMethodAccessorImpl.invoke0 (Methode Muttersprache) ~ [: 1.8.0_73] bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) ~ [: 1.8.0_73] bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java : 43) ~ [?: 1.8.0_73] bei java.lang.reflect.Method.invoke (Methode.java:497) ~ [?: 1.8.0_73] um clojure.lang.Reflector.invokeMatchingMethod (Reflector. java: 93) ~ [clojure-1.6.0.jar :?] um clojure.lang.Reflector.invokeInstanceMethod (R eflector.java:28) ~ [clojure-1.6.0.jar :?] um backtype.storm.testing $ submit_local_topology.invoke (testing.clj: 276) ~ [storm-core-0.10.0.jar: 0.10.0] um backtype.storm.LocalCluster $ _submitTopology.invoke (LocalCluster.clj: 43) ~ [storm-core-0.10.0.jar: 0.10.0] um backtype.storm.LocalCluster.submitTopology (Unknown Source) ~ [Sturm-Core-0.10.0.jar: 0.10.0] bei com.spnotes.storm.HelloStorm.main (HelloStorm.java:36) ~ [Klassen/:?]

Antwort

2

Sie haben Tippfehler - sp l itter2.

builder.setBolt ("Wort-spitter2", neue WordSpitterBolt()). ShuffleGrouping ("line-reader-spout2"); builder.setBolt ("Wort-Zähler", neues WordCounterBolt(), 2) .shuffleGrouping ("Wort-Spitter").shuffleGrouping ("word-splitter2");