Storm的学习(四)

这一篇博客想说说数据重组的操作(Trident repartitioning operations),所谓的数据重组,就是数据的重新组合喽?是的,这个就和MR(MapReduce)程序有点相似了,因为一个拓扑是由多个组件组成的,那么组件之间数据是如何传送的哪?步入正题:
1 shuffle operation
随机分组,即组件之间的数据传送是随机发送的,理论上保证每一个接受数据的组件其接受的数量是相同的,如下图所示:一个Spout的下一级是两个过滤器,如果采用随机分组,那么数据就会随机的发送到过滤器上,正如下图所示:
Storm的学习(四)_第1张图片

mystream.shuffle().each(new Fields("a","b"), new
myFilter()).parallelismHint(2)

2 partitionBy operation
根据某个具体的字段分组,有点像MapReduce喽。
Storm的学习(四)_第2张图片

mystream.partitionBy(new Fields("username")).each(new
Fields("username","text"), new myFilter()).parallelismHint(2)

3 global operation
所有的数据仅发送给同一个目标。
Storm的学习(四)_第3张图片

mystream.global().each(new Fields("a","b"),
new myFilter()).parallelismHint(2)

4 broadcast operation
按照字面的翻译是广播的意思,其实也就是向所有目标发送完整的数据。
Storm的学习(四)_第4张图片

mystream.broadcast().each(new Fields("a","b"),
new myFilter()).parallelismHint(2)

你可能感兴趣的:(storm)