Bolt是Topology中数据处理的基本单元,也是Storm针对处理过程的编程单元。Topology中所有的处理都是在这些bolt中完成的。 Bolt可以将数据项发送至多个数据流(Stream)。编程人员首先可以使用OutputFieldsDeclarer类的declareStream()方法声明多个流,指定数据将要发送到的流,然后使用SpoutOutputCollector的emit方法将数据发送(原生spout)。

Storm为Bolt提供的编程抽象,以接口的形式,面向接口的编程风格。其中IRichBolt是使用Java语言实现Bolt最主要的接口。事实上,IRichBolt本身并未提供更多属性或方法,只是扩展了(extends)另外两个接口IBolt和IComponent。

IRichBolt是使用Java语言实现Bolt最主要的接口,拓展了(extends)另外两个接口IBolt和IComponent.。接口包含的方法有prepare(in stormConf,in context,in collector):void,execute(in tuple) :void,cleanup():void。最重要的方法是execute(),该方法接收一个数据项作为输入。Bolt可以将处理后的结果作为新的Tuple,使用OutputCollector对象的emit()方法发送。Bolt可以在OutputCollector中对每一个发送数据项调用ack()方法,使得storm能够追溯这个数据项是否被完整处理。

IBolt和IComponent接口

1、prepare()与cleanup()      void prepare(java.util.Map.stormConf,TopologyContext context,OutputCollector collector)

   prepare()用于实例化Bolt的一个运行时任务,被集群中某一进程调用,提供Bolt运行的环境。prepare()方法三个参数:stormConf,context,collector.

    (1)sotrmConf对象维护Storm中针对该Bolt的配置信息。这些配置信息是Topology提供的,被集群中运行该Bolt的机器使用。

    (2)context上下文对象,用于获取该组件运行时任务的信息。

    (3)collector对象用于从该Bolt发送数据项。

2、execute()

    该方法用于Bolt从Topology中接收一个数据项(Tuple),并可以将处理的结果作为新的数据项发送(emit),是Bolt需要实现的最重要的方法。这个方法的参数input是一个数据项对象,它包含了众多的元数据(metadata),包括它来自的组件、流、任务等。数据项中的值,可以通过Tuple类的getValue()方法获得。处理结果的发送是通过在prepare()方法中提供的OutputCollector对象,调用emit方法实现。

3、IBasicBolt和BaseBasicBolt

    在许多场景下Bolt的数据处理,都需要确认处理完成或认定失败。需要代码emit数据和调用ack/fail。Storm提供了另一个用来实现Bolt的接口IBasicBolt,用于该接口的实现类,会在执行execute方法之后自动调用ack方法。

  

Storm Bolt接口相关推荐

  1. Storm Bolt之定时机制Tick应用

    Storm中有一种内置的定时机制Storm Bolt之Tick,可以在任何bolt的task每个一定时间(支持通过用户自定义配置)收到来自System Id的tick tuple.Bolt在收到这样的 ...

  2. bolt在java_Storm Bolt接口

    Bolt是Topology中数据处理的基本单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些bolt中完成的. Bolt可以将数据项发送至多个数据流(Stream).编 ...

  3. 大数据实时处理系统架构

    系统基本架构 整个实时分析系统的架构就是先由电商系统的订单服务器产生订单日志, 然后使用Flume去监听订单日志,并实时把每一条日志信息抓取下来并存进Kafka消息系统中, 接着由Storm系统消费K ...

  4. Storm的WordCount案例(spout bolt详细总结)

    spout介绍 一个spout是由流组成的数据源在storm的拓扑里,通常情况下会读取外部的数据源  然后emit(发射)到拓扑里面,比如是kafka,MySQL或者redis等等,Spout有两种实 ...

  5. storm源码之storm代码结构【译】

    说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...

  6. Storm之Bolt-接口

    IBolt: bolt接口类,定义了常用的几个接口,IBolt的实现类在client上被创建,然后序列化到拓扑里并被提交到集群的master上,之后nimbus会启动worker进行反序列化,调用pr ...

  7. 携程基于Storm的实时大数据平台实践

    来源:http://mp.weixin.qq.com/s?__biz=MzI4OTU3ODk3NQ==&mid=2247483881&idx=1&sn=04971941bf57 ...

  8. Storm源码分析之四: Trident源码分析

    Storm源码分析之四: Trident源码分析 @(STORM)[storm] Storm源码分析之四 Trident源码分析 一概述 0小结 1简介 2关键类 1Spout的创建 2spout的消 ...

  9. apache ignite_使用Apache Storm和Apache Ignite进行复杂事件处理(CEP)

    apache ignite 在本文中, "使用Apache Ignite进行高性能内存计算"一书的作者将讨论使用Apache Strom和Apache Ignite进行复杂的事件处 ...

最新文章

  1. Vi非正常退出导致敏感信息泄露
  2. 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现
  3. Java开发小技巧(六):使用Apache POI读取Excel
  4. SCVMM 2012 R2运维管理十三之:将资源添加到VMM库
  5. 事情各大厂商在战场上布局
  6. 打破“单点防护”缺陷,山石网科发布“云网端”XDR解决方案
  7. block介绍(四)揭开神秘面纱(下)
  8. c语言程序2048_C语言2048小游戏演示和说明
  9. spring boot连接redis配置127.0.0.1_springboot+redis项目实战
  10. MFC的Application Wizard所生成的各种文件功能
  11. 活性边表算法c语言,《计算机图形学》有序边表填充算法.doc
  12. 2003 服务器自动重启设置,Win2003定时自动重启的完美方案
  13. 综合类新闻(APP)
  14. VsCode同步印象笔记
  15. 原创科幻短篇《Bug》
  16. javascript表单三级联动
  17. RxJS + Redux + React = Amazing!(译二)
  18. PS中去掉图片周围的无用白色区域
  19. 湖南中医药大学成考2022年下学期网络课程学习与考试工作安排
  20. Android 第三方桌面,怎么请求Widget的android.permission.BIND_APPWIDGET

热门文章

  1. Boost:boost::bimaps::multiset_of的测试程序
  2. VTK:可视化算法之SingleSplat
  3. VTK:可视化算法之ImageGradient
  4. VTK:PolyData之PointLocatorRadius
  5. VTK:网格之QuadricDecimation
  6. Qmake创建项目文件
  7. Qt Creator测验Testing
  8. OpenGL Indirect Culling间接剔除实例
  9. C++fast power快速指数的实现(附完整源码)
  10. C++rat maze老鼠迷宫算法(附完整源码)