Spout的实现步骤:
·        对文件的改变进行分开的监听,并监视文件夹下有无新日志文件加入。
·        在数据得到了字段的说明后,将其转换成tuple。
·        声明Spout和Bolt之间的分组,并决定tuple发送给Bolt的途径。

Spout的详细编码在Listing Three中显示。

Listing Three:Spout中open、nextTuple和delcareOutputFields方法的逻辑。
1.  public void open( Map conf, TopologyContext context,SpoutOutputCollector collector )  
2.  {   
3.             _collector = collector;  
4.           try  
5.           {  
6.           fileReader  =  new BufferedReader(new FileReader(new File(file)));
7.           }
8.           catch (FileNotFoundException e)
9.           {
10.          System.exit(1);   
11.          }
12. }                                                         
13.  
14. public void nextTuple()
15. {  
16.          protected void ListenFile(File file)
17.          {
18.          Utils.sleep(2000);  
19.          RandomAccessFile access = null;
20.          String line = null;  
21.             try  
22.             {
23.                 while ((line = access.readLine()) != null)
24.                 {
25.                     if (line !=null)
26.                     {  
27.                          String[] fields=null;
28.                           if (tupleInfo.getDelimiter().equals("|"))  fields = line.split("\\"+tupleInfo.getDelimiter());  
29.                           else  
30.                           fields = line.split  (tupleInfo.getDelimiter());  
31.                           if (tupleInfo.getFieldList().size() == fields.length)  _collector.emit(new Values(fields));
32.                     }
33.                }
34.             }
35.             catch (IOException ex){ }
36.             }
37. }  
38.  
39. public void declareOutputFields(OutputFieldsDeclarer declarer)
40. {  
41.       String[] fieldsArr = new String [tupleInfo.getFieldList().size()];
42.       for(int i=0; i<tupleInfo.getFieldList().size(); i++)
43.       {
44.               fieldsArr = tupleInfo.getFieldList().get(i).getColumnName();
45.       }
46. declarer.declare(new Fields(fieldsArr));
47. }     
declareOutputFileds()决定了tuple发射的格式,这种话Bolt就能够用类似的方法将tuple译码。Spout持续对日志文件的数据的变更进行监听,一旦有加入Spout就会进行读入而且发送给Bolt进行处理。

很多其它精彩内容请关注:http://bbs.superwu.cn
关注超人学院微信二维码:

Spout的实现步骤的更多相关文章

  1. 使用Storm实现实时大数据分析

    摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Sto ...

  2. Storm实现实时大数据分析

    当今世界,公司的日常运营经常会生成TB级别的数据.数据来源囊括了互联网装置可以捕获的任何类型数据,网站.社交媒体.交易型商业数据以及其它商业环境中创建的数据.考虑到数据的生成量,实时处理成为了许多机构 ...

  3. 使用Storm实现实时大数据分析(转)

    原文链接:http://blog.csdn.net/hguisu/article/details/8454368 简单和明了,Storm让大数据分析变得轻松加愉快. 当今世界,公司的日常运营经常会生成 ...

  4. 使用Storm实现实时大数据分析!

    随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb's上结合了汽车超速监视,为我们演示了使用Storm进 ...

  5. TODO:GitHub创建组织的步骤

    TODO:GitHub创建组织的步骤 使用GitHub进行团队合作,写这个步骤主要作用是为了OneTODO作为一个团队组织进行代码的分享,让更多人来参与. 使用帐号.密码登录GitHub 2.右上角加 ...

  6. 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解

    工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...

  7. MVC CodeFirst简单的创建数据库(非常详细的步骤)

       最近在学习MVC的开发,相信有过开发经验的人初学一个新的框架时候的想法跟我一样最关心的就是这个框架如何架构,每个架构如何分工,以及最最关键的就是如何与数据库通信,再下来才是学习基础的页面设计啊等 ...

  8. Kooboo CMS技术文档之二:Kooboo CMS的安装步骤

    在IIS上安装Kooboo CMS Kooboo CMS安装之后 安装的常见问题 1. 在IIS上安装Kooboo CMS Kooboo CMS部署到正式环境相当简单,安装过程是一个普通MVC站点在I ...

  9. 简记用ArcGIS处理某项目需求中数据的步骤

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 项目需求涉及如下几个步骤: a.矢量化 b.获取范围内要素 ...

随机推荐

  1. eclipse中tomcat启动项目 修改java代码不重启服务

    1.双击tomcat 2.选择modules 3.选中项目点击edit 4.去掉勾.去除auto reloading enabled 的选中 ,点击OK,

  2. 创建Xml的将但方法和向Xml中添加数据

    </SendUserId>// ::</DateTime></AcceptUserId>       <AcceptUserId></Accept ...

  3. ThinkPHP第十六天(redirect、join、视图模型)

    1.redirect /** * Action跳转(URL重定向) 支持指定模块和延时跳转 * access protected * @param string $url 跳转的URL表达式 * @p ...

  4. (转)C++中extern “C”含义深层探索

    (转)C++中extern “C”含义深层探索 转自: http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html 1.引言 C++语 ...

  5. pyhton10min系列之程序员的浪漫-足迹生成器,有视频教程

    记录去过的足迹 本文为原创文章 项目主页 跪求star 程序员的浪漫,我女朋友蘑菇喜欢旅游,于是我做了这个,记录2015一起去过的地方,祝她圣诞快乐 如果觉得对你有帮助,github求个star 视频 ...

  6. ASP.NET jQuery 随笔 使用allValidator插件简单实现客户端验证功能

    首先放出该插件的下载地址:http://pan.baidu.com/s/1Aa3yD,里面有帮助文档,详细了解可以自行下载学习,本章只讲解一些基本的验证功能,页面代码如下: <%@ Page L ...

  7. Python的安装和详细配置(转)

    Python是一种面向对象.解释型计算机程序设计语言.被认为是比较好的胶水语言.至于其他的,你可以去百度一下.本文仅介绍python的安装和配置,供刚入门的朋友快速搭建自己的学习和开发环境.本人欢迎大 ...

  8. TCP/IP笔记 三.运输层(3)——TCP超时重传算法

    TCP 每发送一个报文段,就对这个报文段设置一次计时器.只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段 1. 平均往返时延RTT 往返时延:一个报文段发出的时间,以及收到相应的确认报文 ...

  9. JAVA GUI学习 - 总结

    一:项目 二:重要组件补充 三:组件高级操作

  10. x0vncserver Fatal server error: no screens found

    I make a connection through SSH and  then I type: # x0vncserver --PasswordFile=/home/hello/.vnc/pass ...