Storm和Redis native的集成
来源:互联网 发布:java gzip压缩字符串 编辑:程序博客网 时间:2024/06/10 15:31
Storm-redis provides basic Bolt implementations, RedisLookupBolt
and RedisStoreBolt
.Storm提供了两种Blot,从Redis查询和插入Redis
public class WordSpout implements IRichSpout { boolean isDistributed; SpoutOutputCollector collector; Random random; public static final String[] words = {"apple", "orange", "banana", "HAP", "IBM"}; @Override public void open(Map map, TopologyContext topologyContext, SpoutOutputCollector spoutOutputCollector) { this.collector = spoutOutputCollector; this.random = new Random(); } @Override public void close() { } @Override public void activate() { } @Override public void deactivate() { } @Override public void nextTuple() { final String word = words[random.nextInt(words.length)]; System.out.println("Spoutword:" + word); collector.emit(new Values(word), UUID.randomUUID()); } @Override public void ack(Object o) { } @Override public void fail(Object o) { } @Override public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) { outputFieldsDeclarer.declare(new Fields("word")); } @Override public Map<String, Object> getComponentConfiguration() { return null; }}
public class PersistentWordCount { private static final String WORD_SPOUT = "WORD_SPOUT"; private static final String COUNT_BOLT = "COUNT_BOLT"; private static final String STORE_BOLT = "STORE_BOLT"; private static final String TEST_REDIS_HOST = "localhost"; private static final int TEST_REDIS_PORT = 6379; public static void main(String[] args) throws Exception { Config config = new Config(); String host = TEST_REDIS_HOST; int port = TEST_REDIS_PORT; if (args.length >= 2) { host = args[0]; port = Integer.parseInt(args[1]); } JedisPoolConfig poolConfig = new JedisPoolConfig.Builder() .setHost(host).setPort(port).build(); WordSpout spout = new WordSpout(); WordCounterBlot bolt = new WordCounterBlot(); RedisStoreMapper storeMapper = setupStoreMapper();RedisStoreBolt storeBolt = new RedisStoreBolt(poolConfig, storeMapper); // wordSpout ==> countBolt ==> RedisBolt TopologyBuilder builder = new TopologyBuilder(); builder.setSpout(WORD_SPOUT, spout, 2); builder.setBolt(COUNT_BOLT, bolt, 2).fieldsGrouping(WORD_SPOUT, new Fields("word")); builder.setBolt(STORE_BOLT, storeBolt, 2).shuffleGrouping(COUNT_BOLT); if (args.length == 3) { StormSubmitter.submitTopology(args[3], config, builder.createTopology()); } else { LocalCluster cluster = new LocalCluster(); cluster.submitTopology("reidsTopo", config, builder.createTopology());/* Thread.sleep(1000); cluster.shutdown();*/ } } private static RedisStoreMapper setupStoreMapper() { return new WordCountStoreMapper(); } private static class WordCountStoreMapper implements RedisStoreMapper { private RedisDataTypeDescription description; private final String hashKey = "wordCount"; public WordCountStoreMapper() { description = new RedisDataTypeDescription( RedisDataTypeDescription.RedisDataType.HASH, hashKey); } @Override public RedisDataTypeDescription getDataTypeDescription() { return description; } @Override public String getKeyFromTuple(ITuple tuple) { System.out.println("-----------word:" + tuple.getStringByField("word")); return tuple.getStringByField("word"); } @Override public String getValueFromTuple(ITuple tuple) { System.out.println("************count:" + tuple.getStringByField("count")); return tuple.getStringByField("count"); } }}
0 0
- Storm和Redis native的集成
- Storm和JDBC native集成
- Storm学习小结(二)——集成JDBC和Redis
- storm教程(六):Storm 和kafka的集成
- storm-kafka 的集成
- STORM入门之(集成Redis)
- Storm和Kafka的集成安装和测试
- Storm1.1.0<温故而知新--hdfs和storm的集成>
- spring和redis集成
- spring和redis集成
- Storm-HBase集成--配置和开发
- Storm-HBase集成--配置和开发
- Storm-HBase集成--配置和开发
- storm笔记 -- 与kafka的集成
- Storm集成Kafka应用的开发
- storm 集成kafka时遇见的问题
- storm笔记 -- 与kafka的集成
- flume+kafka+storm的集成使用
- Spring的《XML显式装配bean》- XML自动装配
- android下载新版本并更新(DownLoadManager、HttpURLConnection)
- CentOS Oracle数据库每天自动备份
- Android:真机调试遇到的问题(INSTALL_FAILED_CANCELLED_BY_USER和INSTALL_FAILED_INSUFFICIENT_STORAGE)
- 求字符串的最小正周期
- Storm和Redis native的集成
- sonar增量问题报告
- 【最火的微信开发开源框架】推荐给开发者应该学会的有关微信开发的十个开源项目
- 数字分类
- x86架构中特权级
- JAVA基础知识
- k8s集群终于跑正常了
- Android Socket通信详解及聊天程序示例
- EditText插入表情并用textview显示