数据模型(Data Model)
storm使用tuple来做为它的数据模型。每一个tuple是一堆值,每一个值有一个名字,而且每一个值能够是任何类型, 在个人理解里面一个tuple能够看做一个没有方法的java对象。整体来看,storm支持全部的基本类型,字符串以及字节数组做为tuple的值类 型。你也能够使用你本身定义的类型来做为值类型, 只要你实现对应的序列化器(serializer)。
topology里面的每一个节点必须定义它要发射的tuple的每一个字段。 好比下面这个bolt定义它锁发射的tuple包含两个字段,类型分别是: doble和triple。
publicclass DoubleAndTripleBolt implements IRichBolt { private OutputCollectorBase _collector; @Override
publicvoid prepare(Map conf, TopologyContext context, OutputCollectorBase collector){
_collector = collector; }
@Override
publicvoid execute(Tuple input){ int val = input.getInteger(0);
_collector.emit(input, new Values(val*2, val*3)); _collector.ack(input); }
@Override
publicvoid cleanup(){ }
@Override
publicvoid declareOutputFields(OutputFieldsDeclarer declarer){
declarer.declare(new Fields("double", "triple")); } }
java
declareOutputFields方法定义要输出的字段 : ["double", "triple"]。这个bolt的其它部分咱们接下来会解释。web
更多精彩内容请关注:http://bbs.superwu.cn 数组
关注超人学院微信二维码:微信