利用Storm实现word count例子与Storm启动流程分析
main函数
public static void main(String[] args) throws AlreadyAliveException, InvalidTopologyException, AuthorizationException, InterruptedException {
//准备一个TopologyBuilder
TopologyBuilder builder=new TopologyBuilder();
builder.setSpout("spout",new RandomSentenceSpout(),Integer.valueOf(5));
builder.setBolt("split",new SplitSentenceBolt(),Integer.valueOf(8)).shuffleGrouping("spout");
builder.setBolt("count",new WordCountBolt(),Integer.valueOf(12)).fieldsGrouping("split",new Fields("word"));
//创建一个configuration,用来制定当前topology需要的数量
Config conf=new Config();
conf.setNumWorkers(2);
//提交任务
//storm有两种运行模式:
//集群模式——在集群上运行
//本地模式——当前编辑器中运行
StormSubmitter.submitTopology("word-count",conf,builder.createTopology());
}
WordCountBolt(),Integer.valueOf(12)).fieldsGrouping(“split”,new Fields(“word”)); 申明分组是按照“word”字段,而用fieldGrouping进行分组,是因为要让同一个字段同时到一个task中,才能够统计得到完成的结果。
Spout
public class RandomSentenceSpout extends BaseRichSpout{
<