package com.realtimecep.pilots.analytics.sns; import backtype.storm.Config; import backtype.storm.LocalCluster; 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; /** * 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 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 LocalTopologyStarter { public static void main(String[] args) { // Step1. Define Topology TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("twitter-stream-reader", new TwitterFilterStreamSpout()); builder.setBolt("data-extractor", new TwitterDataExtractorBolt()) .shuffleGrouping("twitter-stream-reader"); builder.setBolt("data-counter", new WordCountSavorBolt()) .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); // Step3. Run Topology LocalCluster cluster = new LocalCluster(); cluster.submitTopology("statss-analytics-topology", conf, builder.createTopology()); } }