天天看点

Storm累计求和中使用各种分组Grouping

 Shuffle Grouping: 随机分组, 随机派发stream里面的tuple, 保证bolt中的每个任务接收到的tuple数目相同.(它能实现较好的负载均衡)

       Fields Grouping:按字段分组, 比如按userid来分组, 具有同样userid的tuple会被分到同一任务, 而不同的userid则会被分配到不同的任务

       All Grouping: 广播发送,对于每一个tuple,Bolts中的所有任务都会收到.

       Global Grouping: 全局分组,这个tuple被分配到storm中的一个bolt的其中一个task.再具体一点就是分配给id值最低的那个task.

       Non Grouping: 随机分派,意思是说stream不关心到底谁会收到它的tuple.目前他和Shuffle grouping是一样的效果,

       Direct Grouping: 直接分组,这是一种比较特别的分组方法,用这种分组意味着消息的发送者具体由消息接收者的哪个task处理这个消息.只有被声明为Direct Stream的消息流可以声明这种分组方法.而且这种消息tuple必须使用emitDirect方法来发射.消息处理者可以通过TopologyContext来或者处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)

 Fields Grouping 的代码

Storm累计求和中使用各种分组Grouping
Storm累计求和中使用各种分组Grouping

ShuffleGrouping代码

Storm累计求和中使用各种分组Grouping
Storm累计求和中使用各种分组Grouping

本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5793975.html,如需转载请自行联系原作者

继续阅读