2021SC@SDUSC
Stream groupings主要分为以下七种:
1. Shuffle Grouping 随机分组。
2. Fields Grouping 按字段分组。
3. All Grouping 广播发送。
4. Global Grouping 全局分组。
5. None Grouping 不分组。
6. Direct Grouping 指向型分组。
7. Local or shuffle grouping 本地或随机分组。
还有一种为customGrouping,是给用户自定义的分组形式。
详细介绍一下,主要用的还是前四种:
1. Shuffle Grouping:元组随机分布在bolt的任务中,这样每个bolt就可以保证获得相同数量的元组,负载均衡。
调用方法举例: builder.setBolt("bolt", new MyBolt(), 2).shuffleGrouping("spout")
2.Fields Grouping:由分组中指定的字段进行分区。例如,如果按“用户id”字段分组,则具有相同“用户id”的元组将始终转到同一任务,但具有不同“用户id”的元组可能转到不同的任务。相较于Shuffle Grouping而言,bolt的tasks之间的负载可能不均衡,因为每个bolt中元组的量是根据field字段而定。
调用方法举例:builder.setBolt("bolt", new MyBolt(), 2).fieldsGrouping("spout", new Fields("session_id"))
3.All Grouping:上游spout/bolt发射出的任何一个tuple都