Grouping测试-Storm
来源:互联网 发布:mac响声很大 编辑:程序博客网 时间:2024/05/17 07:01
分组类MyFirstStreamGrouping
public class MyFirstStreamGrouping implements CustomStreamGrouping { private static Logger log = LoggerFactory.getLogger(MyFirstStreamGrouping.class); private List<Integer> tasks; @Override public void prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks) { //targetTasks就是在Storm运行时,当前有几个目标Task可以选择,每一个都给编上了数字编号 this.tasks = targetTasks; log.info(tasks.toString()); } //返回值是List .在提供的 'List targetTasks' Task中选择任意的几个(必须至少是一个)Task来处理数据。 @Override public List<Integer> chooseTasks(int taskId, List<Object> values) { log.info(values.toString()); return Arrays.asList(tasks.get(0)); }}
测试代码
TopologyBuilder builder = new TopologyBuilder();builder.setSpout("words", new TestWordSpout(), 2);//自定义分组,builder.setBolt("exclaim1", new DefaultStringBolt(), 3) .customGrouping("words", new MyFirstStreamGrouping())
storm源码
public interface CustomStreamGrouping extends Serializable { void prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks); List<Integer> chooseTasks(int taskId, List<Object> values);}
Hadoop 分组
Hadoop MapReduce的Map完成后会把Map的中间结果写入磁盘,在写磁盘前,线程首先根据数据最终要传送到的Reducer把数据划分成相应的分区,然后不同的分区进入不同的Reduce。我们先来看看Hadoop是怎样把数据怎样分组的,这是Partitioner唯一一个方法:
public class Partitioner<K, V> { @Override public int getPartition(K key, V value, int numReduceTasks) { return 0; }}
上面的代码中:Map输出的数据都会经过getPartition()方法,用来确定下一步的分组。numReduceTasks是一个Job的Reduce数量,而返回值就是确定该条数据进入哪个Reduce。返回值必须大于等于0,小于numReduceTasks,否则就会报错。返回0就意味着这条数据进入第一个Reduce。对于随机分组来说,这个方法可以这么实现:
public int getPartition(K key, V value, int numReduceTasks) { return hash(key) % numReduceTasks;}
其实Hadoop 默认的Hash分组策略也正是这么实现的。这样好处是,数据在整个集群基本上是负载平衡的。Storm和Hadoop不同的是,Storm允许一条数据被多个Task处理.
阅读全文
0 0
- Grouping测试-Storm
- storm自定义grouping
- twitter storm(Stream grouping)
- 关于Storm Stream grouping
- storm stream grouping
- storm-Custom Grouping
- 学习-storm中的Grouping
- Storm杂记 — Field Grouping和Shuffle Grouping的区别
- storm的八种Grouping策略
- storm的tail特性和stream grouping
- storm 流分组策略(Stream grouping)
- storm 流分组策略(Stream grouping)
- storm 测试
- storm 测试
- Storm Grouping机制详解(包含两篇参考资料)
- Storm 基础 -- spout与bolt设置多重grouping
- Hadoop中Partition解析 和 storm的grouping
- storm-All grouping的应用场景1-发送信号量指令
- 获取Android设备的唯一标识符
- arttemplate模板
- 关于Springboot调错篇
- JXNU 2017 校ACM程序设计竞赛(16级)题解
- UE4中类自动生成代码解析
- Grouping测试-Storm
- ubuntu开发环境
- 6-13总结
- 无线OSS-高精度整数加法(加数可以为负数,应实现高精度加减法)
- C++期末复习练手题
- arttemplate模板--绑定集合
- idea集成svn
- 实际工作中:----mybatis长用的mapper.xml
- 数据备份——PHP