BasicBolt和IRichBolt之间的区别
2016-05-19 11:23
411 查看
IRichBolt继承自IBolt,IBolt会使用OutputCollector来发送元组。
OutputCollector有两个用于发送元组的函数:
IBasicBolt使用BasicOutputCollector来发送元组
BasicOutputCollector只有第二个emit函数。但是这个函数包裹了OutputCollector第一个emit函数来完成工作。
因此,在IBasicBolt中,
在使用IRichBolt是,如果你想可靠的处理元组,你应该显式地调用
public interface IBolt extends Serializable { ... void prepare(Map stormConf, TopologyContext context, OutputCollector collector); ... }
OutputCollector有两个用于发送元组的函数:
//后续component会向acker发送ack响应。 List<Integer> emit(String streamId, Tuple anchor, List<Object> tuple) //后续component不会向acker发送ack响应。 List<Integer> emit(String streamId, List<Object> tuple) {
IBasicBolt使用BasicOutputCollector来发送元组
public interface IBasicBolt extends IComponent { ... void execute(Tuple input, BasicOutputCollector collector); ... }
BasicOutputCollector只有第二个emit函数。但是这个函数包裹了OutputCollector第一个emit函数来完成工作。
//out是一个OutputCollector实例. List<Integer> emit(String streamId, List<Object> tuple) { return out.emit(streamId, inputTuple, tuple); }
因此,在IBasicBolt中,
emit(String streamId, List<Object> tuple)是用于处理元组的可靠方法。但是,在IRichBolt中,它不是一个可靠的方法。
在使用IRichBolt是,如果你想可靠的处理元组,你应该显式地调用
emit(String streamId, Tuple anchor, List<Object> tuple)。
相关文章推荐
- Release Notes - Apache Storm - Version 0.9.2-incub
- 康诺云推出三款智能硬件产品,为健康管理业务搭建数据池
- MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程
- C/C++实现对STORM运行信息查看及控制的方法
- php+ajax导入大数据时产生的问题处理
- C# 大数据导出word的假死报错的处理方法
- 实时计算知多少?
- 用Python实现协同过滤的教程
- Python利用多进程将大量数据放入有限内存的教程
- mongodb常遇到的错误。
- Stack数据结构的特点后进先出的应用:大数据运算
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- Spark机器学习(二) 局部向量 Local-- Data Types - MLlib
- Spark机器学习(三) Labeled point-- Data Types
- 基于Storm的Nginx log实时监控系统
- YARN或将成为Hadoop新发力点
- Hadoop 1.x版本伪单机配置
- Glusterfs的编译选项 #pragma GCC poison system popen
- Python 大数据思维导图
- Spark HA部署方案