Strom框架中的单词统计

1 篇文章 0 订阅
1 篇文章 0 订阅

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值