Spout的实现步骤


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

关注超人学院微信二维码:

时间: 2024-08-28 22:27:01

Spout的实现步骤的相关文章

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

摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Storm进行实时大数据分析.CSDN在此编译.整理. 简单和明了,Storm让大数据分析变得轻松加愉快. 当今世界,公司的日常运营经常会生成TB级别的数据.数据来源囊括了互联网装置可以捕获的任何类型数据,网站.社交媒体.交易型商业数据以及其它商业环境中创建的数据.考虑到数据的生成量,实时处理成为了许多机

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

原文链接:http://blog.csdn.net/hguisu/article/details/8454368 简单和明了,Storm让大数据分析变得轻松加愉快. 当今世界,公司的日常运营经常会生成TB级别的数据.数据来源囊括了互联网装置可以捕获的任何类型数据,网站.社交媒体.交易型商业数据以及其它商业环境中创建的数据.考虑到数据的生成量,实时处理成为了许多机构需要面对的首要挑战.我们经常用的一个非常有效的开源实时计算工具就是Storm —— Twitter开发,通常被比作“实时的Hadoop

微信公众号之订阅号(已认证)实现oauth2授权登录详细步骤介绍

一: 简介 通过 微信公众平台---->权限接口 可以得知 微信的订阅号是没有授权登录接口的,只有服务号才有该权限.这点微信公众平台在多处反复强调 最终的事实是:微信订阅号是可以实现授权登录的! 二:具体实现步骤: 1. 首先在 微信公众平台(https://mp.weixin.qq.com/) [开发]----> [基本配置]----->[服务器配置]完成基本的配置信息 URL: 这里的地址我写的是我们HTML5项目的某个Controller或Servlet的地址,例如 http://

关于win下Memcached安装步骤

2天对我来说有点煎熬..数据量达到17w的时候 我本地执行查询速度特别慢! 请教了一些php大牛如何解决速度问题,在加了索引和优化sql后还是速度慢!我决定在win环境下用Memcached和memcache 来处理,先声明一下: memcache是php的拓展,memcached是客户端,复杂的说:Memcache模块提供了于memcached方便的面向过程及面向对象的接口,memcached是为了降低动态web应用 从数据库加载数据而产生的一种常驻进程缓存产品. 因为我本地用的是xampp集

eclipse安装java ee插件方法步骤

1.本人以前使用的MyEclipse进行Javaweb开发,但是后来由于myeclipse实在太臃肿,经常在运行的过程中不流畅 (可能电脑内存也不是太高吧)   !所以坚决换用eclipse,但是问题来了,下载的eclipse因为是标准版所以也不支持Javaweb开发,所以要来配置一下开发环境,安装Javaee开发插件   ,以下为安装步骤 1.1 在Eclipse中菜单help选项中选择install new software选项 1.2 在work with 栏中输入 http://down

sourceTree 安装使用步骤 - Mac

刚到公司,公司是用sourceTree管理代码,瞬间懵逼,自己下载吧,安装到 要去Atlassian上注册账号,点击goto 按步骤输入邮箱地址和登录密码. 我用的苹果电脑  网页打不开 查询网上说的要FQ 我就用APP store 下载一个VPN 随意下载一个 打开,  我用的第一个 打开网页 按步骤输入邮箱地址和密码了,  等着邮件回复  这是一个坑呀 回复要一天 一般都是半夜十二点才给发,而且我用的QQ邮箱 直接给发到垃圾箱了 进去访问网址 还的打开VPN 点击downloads  找到s

VMware 安装CentOS 6.5图文步骤 以及安装后无法联网的解决办法

一.VMwareWorkstation10 中安装Centos6.5(64位)步骤: 首先下载vmware 和centos6.5 1. 打开VMware-workstation点击“新建虚拟机”,到向导窗口.选择自定义—>下一步.   2. 选择虚拟机硬件兼容workstation10.0,下一步.   3. 选择稍后安装系统,下一步.   4. 选择操作系统为Linux,版本CentOS 64 位.下一步.   5. 给虚拟机命名,指定安装位置,下一步.   6. 配置处理器信息(我这里采用默

回归分析步骤

The 13 Steps for Statistical Modeling in any Regression or ANOVA No matter what statistical model you're running, you need to go through the same 13 steps.  The order and the specifics of how you do each step will differ depending on the data and the

PHP连接MySQL的八个步骤【实操】

我们为大家将数据库连接整理成了最重要的8个步骤,我戏称它为:"数据库连接天龙八步". 这八个步骤如下,并且将每一步使用的函数都做了说明: 第一步:  连接数据库服务器 类型 说明 函数 mysqli_connect 功能 连接到mysql数据库服务器 参数1 主机 参数2 数据库服务器登陆名 参数3 密码 参数4 数据库的名称 参数5 数据库服务器端口不填默认3306 若参数4,数据库名称在此步已填并择,不需要执行第三步. 第二步:  判断错误 类型 说明 函数 mysqli_errn