天天看点

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,否则统计出来的数据是不对的;

继续阅读