天天看點

Strom架構中的單詞統計

Strom架構中的單詞統計

      • 34.Strom架構中的單詞統計Topology定義如下,其中定義了兩個Bolt,試述兩個Bolt各自完成的功能,以及中間結果如何在兩個Bolt之間傳輸
      • 35.在Strom的單詞統計執行個體中,為何需要使用fieldsGrouping()方法保證相同單詞發送到同一個任務上進行處理

34.Strom架構中的單詞統計Topology定義如下,其中定義了兩個Bolt,試述兩個Bolt各自完成的功能,以及中間結果如何在兩個Bolt之間傳輸

TopologyBuilder builder = new TopologyBuilder();
Builder.setSpout(“sentences”,new RandomSentenceSpout(),5);
builder.setBolt(“split”,new SolitSentence(),8)
    .shuffleGrouping(“sentences”);
builder.setBolt(“cout”,new WordCount(),12)
    .fieldsGrouping(“split”,new Fields(“word”));
           

第1個Bolt用于單詞的分割沒改Bolt中的任務随機接收Spout發送的句子,并從接收的句子中提取出單詞;第2個Bolt接收第1個Bolt發送的Tuple并進行處理(Bolt是通過訂閱Tuple的名稱來接收相應的資料的,第1個Bolt聲明其輸出Stream的名稱為”Split”,而第2個Bolt聲明其訂閱的Stream為”spilt”,是以第2個Bolt可以接收到第1個Bolt發送的Tuple),即統計分割後的單詞出現的次數。通過fieldsGrouping()方法,在”word”上具有相同字段值的所有Tuple(在本例中即單詞相同的Tuple)将發送到同一個任務中進行統計,進而保證了統計的準确性。

35.在Strom的單詞統計執行個體中,為何需要使用fieldsGrouping()方法保證相同單詞發送到同一個任務上進行處理

FieldsGrouping:它保證相同field值的tuple會去同一個task,單詞統計執行個體中必須保證相同的元素到同一個task,這時候必須用fieldsGrouping,否則統計出來的資料是不對的;

繼續閱讀