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方法。

bolt在java_Storm Bolt接口相关推荐

  1. Storm Bolt接口

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

  2. Kafka+Storm+HBase项目Demo(5)--topology,spout,bolt使用

    相关概念 1.Topologies 一个topology是spouts和bolts组成的图, 通过stream groupings将图中的spouts和bolts连接起来. 2.Streams 消息流 ...

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

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

  4. Storm学习笔记(三)——Storm组件详解之Bolt、Topology

    目录 Bolt消息处理者 生命周期 开发Bolt组件 Topology拓扑 结构 运行模式 示例 Bolt消息处理者 Bolt在Storm中是一个被动的角色,它把元组作为输入,然后产生新的元组作为输出 ...

  5. BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面

    BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...

  6. 这么小的key-val数据库居然也支持事务——与短跑名将同名的数据库Bolt

    传送门: 柏链项目学院 什么是Bolt?   Bolt是一个纯净的基于go语言编写的key-val数据库,该项目受到LMDB项目的启发,目标是提供一个不需要完整服务器的简单.快速.可靠的数据库.    ...

  7. Storm精华问答 | 如何理解spout/bolt的生命周期?

    戳蓝字"CSDN云计算"关注我们哦! Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop.随着越来越多的场景对Hadoop的MapReduce高 ...

  8. Could not load driver class org.neo4j.ogm.drivers.http.driver.HttpDriver(Neo4j连接用bolt还是http)

    这里需要注意如果只是用了 spring-boot-starter-data-neo4j 的话,连接驱动默认使用的是bolt协议.bolt协议好像底层使用二进制操作,更高效.如果要是用http协议的话要 ...

  9. 配置neo4j bolt+s ssl

    配置neo4j bolt+s ssl 创建证书 更改权限 配置neo4j ssl 查看neo4j ui页面 springboo项目连接neo4j bolt+s ssl 导入rootCA.crt证书到 ...

最新文章

  1. Atitit hsv转grb  应该优先使用hsv颜色原则 方便人类
  2. Gameplay 框架
  3. pythonista3使用教程-Pythonista中文文档:使用Pythonista
  4. 【Paper】2009_Controllability of Multi-Agent Systems from a Graph-Theoretic Perspective
  5. 在Linux系统下生产者消费者,生产者-消费者问题实现 (linux下C语言)
  6. Windows下用Mingw编译Boost.Regex库
  7. 内核中的UDP socket流程(11)——ip_append_data
  8. c# socket接收字符串_php 的 socket简单原理及实现
  9. C++11中内联函数(inline)
  10. 详解JavaScript的五种继承方式
  11. The Bean Validation API is on the classpath but no implementation could be found 项目启动报错解决
  12. 超长指令字计算机,超长指令字
  13. 【数据库作业10】用SQL语句来表示关系代数中的表达式
  14. python画史迪仔_手把手教你如何使用Python来生成马赛克画!
  15. 嘉曼服饰上市破发,大跌16%:公司市值37亿 刘溦家族色彩浓厚
  16. 安全扫描工具-appscan
  17. C++中的 .h 和 .cpp 详解
  18. 微信服务号的六大价值有哪些
  19. 跟我一起学PyTorch-07:嵌入与表征学习
  20. 飞书机器人python获取open_id对应的用户信息api调用

热门文章

  1. 台式计算机磁盘视图怎么改,[极速u盘装系统]win7系统分配盘符“因为磁盘管理控制台视图不是...
  2. 管理信息系统期末复习资料
  3. caxa工程知识管理服务器配置信息怎么填,CAXA CAPP教程:如何定义与单元格相关联的知识库...
  4. AttributeSet与TypeArray的关系
  5. java中esb是什么意思_ESB与服务
  6. 如何远程登录Linux
  7. 浅谈CGI程序与web间数据交互
  8. 《楚汉传奇》对韩信的一点看法
  9. Js逆向教程20-Hook基础
  10. iPhone分辨率及尺寸