[text](本节书摘来自华章计算机《Storm分布式实时计算模式》一书中的第1章,第1.2节,作者:(美)P. Taylor Goetz Brian O’Neill 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2 单词计数topology的数据流
如图1-2所示,单词计数topology由一个spout和下游的三个bolt组成。
1.2.1 语句生成spout
SentenceSpout类的功能很简单,向后端发射一个单值tuple组成的数据流,键名是“sentence”,键值是字符串格式存储的一句话。如下所示:
为了简化起见,我们的数据源是一个静态语句的列表。spout会一直循环将每句话作为tuple发射。实际应用中,spout通常会连接到动态数据源上,比如通过Twitter的API获取推特消息。
1.2.2 语句分割bolt 语句分割bolt(SplitSentenceBolt)类会订阅sentence spout发射的tuple流。每当收到一个tuple,bolt会获取“sentence”对应值域的语句,然后将语句分割为一个个的单词。每个单词向后发射一个tuple:
1.2.3 单词计数bolt 单词计数bolt(WordCountBolt)订阅SplitSentenceBolt类的输出,保存每个特定单词出现的次数。每当bolt接收到一个tuple,会将对应单词的计数加一,并且向后发送该单词当前的计数。
1.2.4 上报bolt 上报bolt订阅WordCountBolt类的输出,像WordCountBolt一样,维护一份所有单词对应的计数的表。当接收到一个tuple时,上报bolt会更新表中的计数数据,并且将值在终端打印。
)