Cara mengirimkan Tuple ke noda berbeda saat badai

semuanya. Saya ingin melakukan pekerjaan itu—— satu semburan mengeluarkan angka ke blotA, dan BlotA mengeluarkan angka ganjil ke Blot_odd, BlotA mengeluarkan angka genap ke Blot_even. Saya memilih satu cara untuk menggunakan emit(streamId,tuple), tetapi saya tidak tahu di mana harus menentukan streamId saya?

Di Blot_odd / Blot_even ,

declareOutputFields(){declarer.declareStream("streamId", new Fields("fieldName"));}

dan di main dari MyTopology.java

main() {
    TopologyBuilder builder = new TopologyBuilder();
    builder.setSpout("num", new NumSpout(), 10);
    builder.setBolt("judge", new Bolt(), 3).shuffleGrouping("num");
    builder.setBolt("odd", new Bolt_odd(), 2).shuffleGrouping("judge");
    builder.setBolt("even", new Bolt_even(), 2).shuffleGrouping("judge");
}

tapi aku gagal.


person Fire    schedule 07.05.2015    source sumber
comment
harap berikan kode Anda untuk new Bolt(), new Bolt_odd() dan new Bolt_even() .   -  person chandu kavar    schedule 07.05.2015
comment
kemungkinan duplikat Bagaimana cara membagi aliran di Apache Storm?   -  person user2720864    schedule 08.05.2015


Jawaban (1)


Anda dapat melakukan seperti di bawah ini.

pada metode deklarOutputFields Bolt, isi detailnya seperti ini.

declarer.declareStream("oddstream", new Fields("fieldName"));
declarer.declareStream("evenstream", new Fields("fieldName"));

Dan Anda dapat mendeklarasikan topologi seperti di bawah ini.

builder.setSpout("num", new NumSpout(), 10);
builder.setBolt("judge", new Bolt(), 3).shuffleGrouping("num");
builder.setBolt("odd", new Bolt_odd(), 2).shuffleGrouping("judge", "oddstream");
builder.setBolt("even", new Bolt_even(), 2).shuffleGrouping("judge", "evenstream");
person Adrian Seungjin Lee    schedule 08.05.2015