數據模型(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 數組
關注超人學院微信二維碼:微信