package com.realtimecep.storm.starter.wordcount; import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.topology.TopologyBuilder; import backtype.storm.tuple.Fields; import com.realtimecep.storm.starter.wordcount.bolts.WordCounter; import com.realtimecep.storm.starter.wordcount.bolts.WordNormalizer; import com.realtimecep.storm.starter.wordcount.spouts.WordReader; /** * Topology Starter Class. * <p/> * $ java -cp rt-statss-pilot-0.1.0-SNAPSHOT-jar-with-dependencies.jar -Dlog4j.configuration=log4j.xml com.realtimecep.storm.starter.wordcount.WordCountTopologyStarter <input file path> * $ java -cp rt-statss-pilot-0.1.0-SNAPSHOT-jar-with-dependencies.jar -Dlog4j.configuration=log4j.xml com.realtimecep.storm.starter.wordcount.WordCountTopologyStarter src/main/resources/words.txt * <p/> * $ mvn exec:java -Dexec.mainClass ="com.realtimecep.storm.starter.wordcount.WordCountTopologyStarter" -Dexec.args ="src/main/resources/words.txt" * * @author <a href="iamtedwon@gmail.com">Ted Won</a> * @version 0.1.0 */ public class WordCountTopologyStarter { public static void main(String[] args) throws InterruptedException { //Topology definition TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("word-reader", new WordReader()); builder.setBolt("word-normalizer", new WordNormalizer()) .shuffleGrouping("word-reader"); builder.setBolt("word-counter", new WordCounter(), 1) .fieldsGrouping("word-normalizer", new Fields("word")); //Configuration Config conf = new Config(); conf.put("wordsFile", args[0]); conf.setDebug(true); //Topology run conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 1); LocalCluster cluster = new LocalCluster(); cluster.submitTopology("Word-Count-Topology", conf, builder.createTopology()); Thread.sleep(10000); cluster.shutdown(); } }