storm-redis 入門
在使用Storm做資料統計時,我們一般會把最終的統計結果儲存到Redis中,storm-redis 模組極大方便了我們在開發Bolt時和Redis的整合,storm-redis使用的是jedis客戶端。
本文在前面WordCountTopology的基礎上引入storm-redis。
實現 RedisBolt
使用比較簡單,只需要繼承 AbstractRedisBolt ,通過構造器傳入Redis的配置資訊,然後實現業務邏輯就可以了。
public class WordCountRedisBolt extends AbstractRedisBolt { private static final String COUNT_KEY = "cnt.%s"; public WordCountRedisBolt(JedisPoolConfig config) { super(config); } @Override protected void process(Tuple tuple) { String w = tuple.getStringByField("word"); Jedis jedis = (Jedis) getInstance(); jedis.incr(String.format(COUNT_KEY, w)); returnInstance(jedis); this.collector.ack(tuple); } @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { } }
執行結果
我們可以在redis中檢視統計結果。
127.0.0.1:6379> scan 0 match cnt.* 1) "50" 2) 1) "cnt.jumped" 2) "cnt.two" 3) "cnt.snow" 4) "cnt.four" 5) "cnt.cow" 6) "cnt.an" 7) "cnt.years" 8) "cnt.over" 9) "cnt.the" 127.0.0.1:6379> get cnt.two "6964" 127.0.0.1:6379> get cnt.years "5487" 127.0.0.1:6379> get cnt.years "5736" 127.0.0.1:6379>
相關閱讀
ofollow,noindex"> http:// storm.apache.org/releas es/1.0.6/storm-redis.html