核心
Spout中方法的说明

1、Spout数据源
消息源Spout是storm的Topology中的消息生产者。

2、spout介绍
2、1spout的结构
Spout是storm的核心组件之一,最源头的接口是IComponent

2、2Spout发出的消息
Spout从外部获取数据后,向Topology中发出的Tuple可以是可靠的,也可以是不可靠的。

注意:一个可靠的消息源可以重新发射一个Tuple(如果该Tuple没有被storm成功处理),但是一个不可靠的消息源spout一旦发出,一个Tuple就把它彻底”遗忘”,也就不可能再发了。

2、3Spout发射的流
Spout可以发射多个流,要达到这样的效果,使用OutputFieldsDeclarer.declareStream来定义多个流(即定义多个stream),然后使用SpoutOutputCollector来发射指定的流。

2、4Spout的重要方法
Spout的重要方法是nextTuple,nextTuple方法发射一个新的元组到Topology,如果没有新的元组发射,则直接返回。注意任务Spout的nextTuple方法都不要实现成阻塞的,因为storm是在相同的线程中调用spout的方法。Spout的另外两个重要方法是ack和fail方法,当spout发射的元组被拓扑成功处理时,调用ack方法,当处理失败时,调用fail方法,ack和fail方法仅被可靠的spout调用。

2、5Spout的组件
Spout的最顶层抽象是ISpout接口,在通常情况下,实现一个Spout,可以直接实现接口IRichSpout,如果不想写多余的代码,可以直接继承BaseRichSpout

3、Spout 实例
3、1open方法
当 一个task被初始化时会调用open方法,一般都会在此方法中初始化发送tuple的对象SpoutOutputCollector和配置对象TopologyContext.
代码如下

public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {this.collector=collector;}

3、2declareOutputFields
此方法用于声明当前Spout的Tuple发送流。流的定义是通过OutputFieldsDeclare.declareStream方法完成的,其中的参数包括了发送的域Fields
代码如下

public void declareOutputFields(OutputFieldsDeclarer declarer) {declarer.declare(new Fields("sentence"));}

3、3nextTuple方法
这是Spout类中最重要的一个方法,发射一个Tuple到Topology都是通过该方法来实现的。
代码如下

public void nextTuple() {String sentence=msgs[random.nextInt(8)];collector.emit(new Values(sentence));}

另外,除了上述的几个方法之外,还有getComponentConfiguration、ack、fail和close方法等,getComponentConfiguration方法用于配置当前组件的参数,storm监测到一个tuple被成功处理时调用ack方法,处理失败时调用fail方法,这两个方法在BaseRichSpout类中已经被隐式实现了

流处理旅程——storm之spout介绍相关推荐

  1. 流式计算storm核心组件介绍以及入门案例---跟着就能在本地跑起来的storm项目

    关于storm的基础,参照我这篇文章:流式计算storm 关于并发和并行,参照我这篇文章:并发和并行 关于storm的并行度解释,参照我这篇文章:storm的并行度解释 关于storm的流分组策略,参 ...

  2. 流处理框架Storm简介

    转自:http://qing.weibo.com/2294942122/88ca09aa33002dsh.html EMC中国研究院 向东 提起Big Data,人们往往会提起大数据的4个V: Vol ...

  3. Storm Trident 详细介绍

    一.概要 1.1 Storm(简介)      Storm是一个实时的可靠地分布式流计算框架.      具体就不多说了,举个例子,它的一个典型的大数据实时计算应用场景:从Kafka消息队列读取消息( ...

  4. 流数据分析平台Storm简介

    流数据分析平台Storm简介 Storm是一个分布式的.容错的实时流计算系统,可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理.Storm保证 ...

  5. 【Storm】Spout的storm-starter及Grouping策略、并发度讲解、网站浏览量和用户数统计

    maven先安装好. 以下讲storm-starter的使用. 1.从github下载官方的storm-starter例子包,是maven工程, 地址 https://github.com/natha ...

  6. 流式计算-Storm基本介绍

    1.离线计算是什么? 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据. ...

  7. 实时流处理框架Storm、Spark Streaming、Samza、Flink,孰优孰劣?!

    https://mp.weixin.qq.com/s?__biz=MzU1NDA4NjU2MA==&mid=2247486490&idx=1&sn=e25a05be8cf98c ...

  8. 流式计算storm应用场景简介

    (1) storm是一个进程常驻内存的.分布式的,对数据实时流式处理框架,不同于MR的批处理和spark streaming的微批处理,storm实现了对数据处理的毫秒级延迟.它的数据源被称为SPOU ...

  9. 大数据技术---流计算(Storm)

    一.流计算概述 流数据:实时产生的数据,并且实时不断地像流水一样到达. 流数据特征: 1.数据快速持续到达,潜在大小也许是无穷无尽的. 2.数据来源众多,格式复杂. 3.数据量大,但是不是十分关注存储 ...

最新文章

  1. MySql数据库连接超时处理
  2. iphone11边框喇手问题_别贪图小便宜!iPhone11真机上手,3个缺点不得不说
  3. 买买买!iPhone 13全系曝光:价格给力
  4. 小米高管称redmi暂没有曲面屏 网友:Redmi K40 Pro曲面屏无望了
  5. 腾讯终于摘掉“游戏公司”帽子!B端业务也稳了
  6. ProgressDialog弹出时的底色变暗(转)
  7. s2sh框架搭建mysql_S2SH项目框架搭建(完全注解)
  8. Java包装类介绍与类型之间相互转换
  9. 计算机组成原理补充实验,计算机组成原理补充实验.doc
  10. 语音信号处理——线性预测编码LPC
  11. docker gitlab 初始密码查看
  12. mike21 matlab tools,MIKE21学习软件
  13. python循环代码优化技巧_记一次优化python循环代码逻辑的过程
  14. 深信服应用交付(AD)学习笔记
  15. 面试篇1:嵌入式C语言面试常见问题
  16. 前端工作越来越难找,是不是已经饱和了?
  17. ParlAI基本使用【文档翻译】
  18. 高利转贷”“职业放贷”是违法借贷行为
  19. C语言编程(恳请c语言高手赐教)
  20. USB供电不足的解决办法

热门文章

  1. Java毕设项目电力公司员工安全培训系统计算机(附源码+系统+数据库+LW)
  2. PUT、POST的区别:
  3. C300--HGU ONU 配置思路指导_方式1
  4. Java入门第三季-综合实战:简易扑克牌游戏
  5. CMakeLists学习二、链接库搜索路径与ld
  6. 织梦插件织梦CMS百度收录查询及批量推送未收录插件
  7. 如何让自己的品牌上百度百科,品牌百度百科怎么做
  8. Revit API 进阶之隐藏dll讲解.
  9. 【新年快乐】嗷,我的2020年,就这样悄咪咪地溜走了
  10. oeacle报错:ORA-01122、ORA-01110、ORA-01207