package com.realtimecep.pilots.analytics.sns; import backtype.storm.Config; import backtype.storm.StormSubmitter; import backtype.storm.topology.TopologyBuilder; import backtype.storm.tuple.Fields; import com.realtimecep.pilots.analytics.sns.bolts.TwitterDataExtractorBolt; import com.realtimecep.pilots.analytics.sns.bolts.WordCountSavorBolt; import com.realtimecep.pilots.analytics.sns.spouts.twitter.twitter4j.TwitterFilterStreamSpout; import redis.clients.jedis.Jedis; /** * Topology Starter Class. * <p/> * java -cp rt-statss-pilot-0.1.0-SNAPSHOT-jar-with-dependencies.jar -Dlog4j.configuration=log4j.xml com.realtimecep.pilots.analytics.sns.LocalTopologyStarter <twitter id> <twitter pwd> <track(comma separated filter terms)> localhost 6379 * <p/> * storm jar rt-statss-pilot-0.1.0-SNAPSHOT-jar-with-dependencies.jar com.realtimecep.pilots.analytics.sns.ClusterTopologyStarter <twitter id> <twitter pwd> <track(comma separated filter terms)> localhost 6379 * storm kill statss-analytics-topology * * @author <a href="iamtedwon@gmail.com">Ted Won</a> * @version 0.1.0 */ public class ClusterTopologyStarter { public static void main(String[] args) throws Exception { // Step1. Define Topology TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("twitter-stream-reader", new TwitterFilterStreamSpout(), 1); builder.setBolt("data-extractor", new TwitterDataExtractorBolt(), 2) .shuffleGrouping("twitter-stream-reader"); builder.setBolt("word-count-savor", new WordCountSavorBolt(), 5) .fieldsGrouping("data-extractor", new Fields("word")); // Step2. Define Configuration Config conf = new Config(); conf.put("user", args[0]); conf.put("password", args[1]); conf.put("track", args[2]); conf.put("redisHost", args[3]); conf.put("redisPort", args[4]); conf.setDebug(false); conf.put(Config.TOPOLOGY_ACKER_EXECUTORS, 0); conf.setNumWorkers(8); conf.setOptimize(true); Jedis jedis = new Jedis(args[3], Integer.parseInt(args[4])); jedis.connect(); jedis.flushAll(); // Step3. Run Topology StormSubmitter.submitTopology("statss-analytics-topology", conf, builder.createTopology()); } }