流处理旅程——storm之tuple介绍
来源:互联网 发布:打铃软件 编辑:程序博客网 时间:2024/06/10 00:06
核心
介绍tuple的作用
tuple元组
tuple是storm的主要数据结构,并且是storm中使用的最基本单元、数据模型和元组
tuple描述
tuple就是一个值列表,tuple中的值可以是任何类型的,动态类型的tuple的fields可以不用声明,默认情况下,storm中的tuple支持私有类型、字符串、字节数组等作为它的字段值,如果使用其他类型,就需要序列化该类型。
tuple的字段默认类型有:integer、float、double、long、short、string、byte、binary
tuple可以理解成键值对,例如、创建一个bolt要发送2个字段(命名为double和triple),其中键就是定义declareOutputFields方法中的fields对象,值就是在emit方法中发送的values对象,以下是一个简单的例子
public class doubleAndTripleBolt extends BaseRichBolt { OutputCollector _collector; public void execute(Tuple input) { int val=input.getInteger(0); _collector.emit(input,new Values(val*2,val*3)); _collector.ack(input); } public void prepare(Map conf, TopologyContext context, OutputCollector collector) { _collector=collector; } public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declare(new Fields("double","triple")); }}
此外 在使用storm java包中,backtype.storm.tuple主要有以下几个类:
1、Fileds.class
2、MessageId.class
3、Tuple.class
4、TupleImpl.class
5、Values.class
列出以上内容是为了更好的理解tuple,这样能够从本质上理解tuple,在使用时更加得心应手
tuple的生命周期
了解一个tuple的生命周期就需要查看源码,如下的java代码展示了spout接口发出tuple的整改过程
public interface ISpout extends Serializable{ void open(Map conf,TopologyContext context,SpoutOutputCollector collector); void nextTuple(); void ack(Object msgId); void fail(Object msgId); void close();}
首先,storm调用Spout的nextTuple方法来获取下一个tuple,spout通过open方法的参数提供的SpoutOutputCollector将新tuple发射到其中一个输出消息流
注意:发射tuple时,spout提供一个message-id,通过这个id来追踪该tuple
接下来,storm跟踪该tuple的树形结构是否成功创建,并根据messageid调用spout中的ack函数,以确认tuple是否被完全处理,如果tuple超时,则调用spout的fail方法。
由此看来,同一个tuple不管是acked,还是failed都是由创建它的spout发出并维护的,所以,即使spout在集群环境中同时执行很多的任务,该tuple也不会被其他任务调用或生成acked或failed状态,总之,storm会利用内部的acker机制保证每个tuple被可靠的处理,最后在完成任务后,spout调用close方法结束tuple的使用。
- 流处理旅程——storm之tuple介绍
- 流处理旅程——storm之spout介绍
- 流处理旅程——storm之入门实例
- 流处理旅程——认识storm
- 流处理旅程——storm的部署
- Storm的tuple介绍
- storm实时流处理介绍
- Storm Tuple
- 【流式计算】Twitter Storm源代码分析之Tuple是如何发送的
- Storm之——搭建Storm集群
- Twitter 新一代流处理利器——Heron 论文笔记之Storm Limitations
- Twitter Storm源代码分析之Tuple是如何发送的
- Twitter Storm源代码分析之Tuple是如何发送的
- storm源代码之tuple是如何发送的
- Storm tuple发送机制
- Python数据结构之——tuple
- Storm之——Kafka+Storm+HDFS整合实战
- Storm学习10---tuple 结构
- memecache安装及使用详解
- 蓝桥杯 2015 2 星系炸弹
- Oracle数据库面试练习题
- Linux Android环境配置
- 拉低效率的五大坏习惯
- 流处理旅程——storm之tuple介绍
- TCP/IP 学习
- eclipse如何重建类中的方法
- Android工具:LeakCanary—内存泄露检测神器
- AeroSpike 类Redis 接口封装实现
- 蓝桥杯-大臣的旅费
- MyBatis 延迟加载,一级缓存,二级缓存设置
- ArcGIS API for JavaScript 4.2学习笔记[6] goTo()地图动画
- VC对话框程序如何使用chtmlview