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/:?]