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的条件即可,这样就可以
阅读(5805) | 评论(0) | 转发(0) |