Storm入门案例

本文介绍了使用Storm进行实时单词统计的入门案例,包括在单机模式下进行开发测试,详细讲解了SentenceSpout、SplitSentenceBolt和WordCountBolt的开发过程,最后构建了WcTopology。
摘要由CSDN通过智能技术生成

1.Storm单机模式

Storm提供了单机开发模式,即使没有Storm集群也可以在本地java环境中进行开发测试。

2.入门案例

  a.需求

        利用Storm实现实时的单词统计

  b.分析需求

c.创建java项目,导入Storm相关开发包

d.开发SentenceSpout

想要开发一个Spout需要写一个类实现 IComponent接口 和 ISpout接口,实现相应方法。

直接实现这两个接口需要实现的方法比较多,可以选择继承BaseRichSpout默认实现类,此类已经实现过如上两个接口,并将大部分方法做了默认空实现,只需继承者开发最重要的三个方法即可。而其它方法只需在需要时覆盖父类的默认空实现即可。

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

   14

   15

   16

   17

   18

   19

   20

   21

   22

   23

   24

   25

   26

   27

   28

   29

   30

   31

   32

   33

   34

   35

   36

   37

   38

   39

   40

   41

   42

   43

   44

   45

   46

   47

   48

   49

   50

   51

   52

   53

   54

   55

   56

   57

   58

   59

   60

   61

   62

   63

   64

   65

   66

   67

package cn.tedu.storm;

 

import java.util.Map;

 

import backtype.storm.spout.SpoutOutputCollector;

import backtype.storm.task.TopologyContext;

import backtype.storm.topology.OutputFieldsDeclarer;

import backtype.storm.topology.base.BaseRichSpout;

import backtype.storm.tuple.Fields;

import backtype.storm.tuple.Values;

 

public class SentenceSpout extends BaseRichSpout{

        

        private String [] senteces = {

                "my name is park",

                "i am so shuai",

                "do you like me",

                "are you sure you do not like me",

                "ok i am sure"

        };

        

        private SpoutOutputCollector collector = null;

        

        /**

         * 初始化的方法,当当前spout被初始化时调用

         *

         * conf:配置对象,包含配置信息,配置信息合并自集群配置和当前拓扑的配置

         * context:上下文对象,代表当前spout运行的环境,可以通过该对象获取 任务 组件 拓扑相关的信息

         * collector:用来发送tuple的对象,可以任意位置发送tuple,这个方法线程安全,通常保存在类的内部方便使用

         */

        @Override

        public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {

                this.collector = collector;

        }

 

        /**

         * storm会不停的调用此方法,来要求spout发送一个tuple。

         * 如果有tuple则通过collector发送,如果没有也不要阻塞这个方法,直接返回即可。

         * storm的底层在用一个死循环不停的调用 nextTuple ack fail方法

         * 如果真的没有tuple要发送,在返回之前最好睡上一毫秒,以便于不至于浪费过多cpu。

         */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳乐一百

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值