Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183373
  • 博文数量: 26
  • 博客积分: 71
  • 博客等级: 民兵
  • 技术积分: 825
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-15 16:14
个人简介

希望在这里与大家一起交流学习,共同进步。。。

文章分类

全部博文(26)

文章存档

2019年(1)

2015年(5)

2014年(6)

2013年(13)

2012年(1)

我的朋友

分类: 架构设计与优化

2015-05-06 22:21:04

storm有多种数据分组策略,但是fieldsGrouping是比较难理解的一种,在这里说一下我的理解

fieldsGroup是可以对相同的词进行分组计算,比如有好多词语进行计数,可以用
public void declareOutputFields(OutputFieldsDeclarer declarer) {
    declarer.declare(new Fields("word"));
}
这个方法中的”word“来代表想要计数的词,这样可以保证相同的词进入同一个task中进行计数,不会有重复计数的可能,但是可能多个不同的词进入同一个task中进行处理,但是这样不会影响词的计数

有时候如果是某一个字符串要在同一个task中进行处理,只要字符串的一部分相同就要进入同一个task,这样可以把这个字符串进行分成一个数组进行处理,emit的时候也提交整个数组即可
public void declareOutputFields(OutputFieldsDeclarer declarer) {
    declarer.declare(new Fields("string[0]",“string[1]”));
}
可以直接把string[0]作为fieldsFroup的条件即可,这样就可以
阅读(5746) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~