Trident wordCount例子解读

来源:互联网 发布:unity3d场景下载 编辑:程序博客网 时间:2024/06/03 08:08

官方文档地址:http://storm.apache.org/documentation/Trident-tutorial.html

简介

这个手册,首先就给了WordCount的例子。WordCount就特么这么好理解么,接口文档上说明少的掉渣啊。吐槽完毕,例子主要分为两个步骤:1. 构建数据源;2. 构建拓扑。

1. 创造源数据

 FixedBatchSpout spout = new FixedBatchSpout(new Fields("sentence"), 3,               new Values("the cow jumped over the moon"),               new Values("the man went to the store and bought some candy"),               new Values("four score and seven years ago"),               new Values("how many apples can you eat"));spout.setCycle(true);

效果:产生一个源数据流。处理过程中至多可以被分成3个batch,batch的name是“sentence”。不停的将上面的4个句子循环形成数据流。

2. 构建Topology

TridentTopology topology = new TridentTopology();        TridentState wordCounts =     topology.newStream("spout1", spout)       .each(new Fields("sentence"), new Split(), new Fields("word"))       .groupBy(new Fields("word"))       .persistentAggregate(new MemoryMapState.Factory(), new Count(), new Fields("count"))                       .parallelismHint(6);

每行依次的效果:
1. 以spout为源创建流;
2. 遍历流中name为“sentence”的batch,作为Split函数的输入,输出name为“word”的tuple。
3. 对name为“world”的tuple做groupby操作;
4. 对groupby的结果,做Count操作,Count为内建聚合方法,结果存储在内存中,存为name为”count”的tuple。每个batch的计算结果再进行聚合(叠加)。
5. 并发度为6,也就是最多允许6个线程。即Executor的数量。

0 0
原创粉丝点击