storm 常用类

简介: 获得 <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</artifactId> <version>0.9.5</version></dependency>常用类 backtype.

获得

<dependency>
	<groupId>org.apache.storm</groupId>
	<artifactId>storm-core</artifactId>
	<version>0.9.5</version>
</dependency>

常用类

backtype.storm.topology. TopologyBuilder
用来建立topology。
Spout Declarer backtype.storm.topology.TopologyBuilder. setSpout(String id, IRichSpout spout, Number parallelism_hint)
给topology设置spout。parallelism_hint为将要执行这个spout的任务数,每个任务对应着一个线程。
Bolt Declarer backtype.storm.topology.TopologyBuilder. setBolt(String id, IRichBolt bolt, Number parallelism_hint)
给topology设置bolt。

backtype.storm. Config
此类拥有一系列成员方法,用来设置对应的参数。

void backtype.storm.StormSubmitter. submitTopology(String name, Map stormConf, StormTopology topology) 
向storm集群提交topology。

backtype.storm.topology. IComponent
一个接口,表明topology的组件。
void backtype.storm.topology.IComponent. declareOutputFields(OutputFields Declarer declarer)
声明当前topology的所有stream的输出模式。
backtype.storm.topology. OutputFieldsDeclarer
输出字段的声明者。
void backtype.storm.topology.OutputFields Declarer. declare(Fields fields)
用默认的stream id进行声明。
void backtype.storm.topology.OutputFieldsDeclarer. declareStream(String streamId, Fields fields)
用指定的stream id与field进行声明
backtype.storm.task. TopologyContext
一个topologyContext会在bolt的prepare()和spout的open()方法中传递给bolt和spout。该类包含了组件在topology内的位置信息,如任务id,输入与输出等。

List<Integer> backtype.storm.spout.SpoutOutputCollector. emit(List<Object> tuple)
喷出一个tuple到默认的输出stream,此steam没有消息id,所以storm没有办法跟踪,因此对于这个tuple将永远不会调用ack()与fail()方法。
List<Integer> backtype.storm.task.OutputCollector. emit(Tuple anchor, List<Object> tuple)
喷射一个新的tuple到默认的抛锚在一个单一tuple的流上。

Tuple

backtype.storm.tuple. Tuple
tuple是storm中的主要数据结构之一,是喷口与闪电之间发送消息的基本单位。它是一个被命名的values的list,其中的每一个value都可以是任意类型。
backtype.storm.tuple.Fields. Fields(String... fields)
Fields类的构造函数,形参列表为(String... fields)。
调试中的一个tuple见图1.
图1:调试中的一个tuple

Spout

backtype.storm.spout. ISpout
这是spout类的核心接口。它有一下几种方法。

void backtype.storm.spout.ISpout. open(Map conf, TopologyContext context, SpoutOutputCollector collector)
当这个组件的task在集群中的一台worker内被初始化的时候,该函数被调用。它向spout提供了该spout执行的环境。
void backtype.storm.spout.ISpout. close()
当spout被关闭时此方法得到调用。
void backtype.storm.spout.ISpout. activate()
当spout从抑制状态变为激活状态时调用。
void backtype.storm.spout.ISpout. deactivate()
当spout被抑制时调用。此时它的nextTuple()方法不会被调用。
void backtype.storm.spout.ISpout. nextTuple()
当该方法被调用时,要求SpoutOutputCollector喷射tuple。
void backtype.storm.spout.ISpout. ack(Object msgId)
表示从此spout喷出的带有messageID的tuple已被完全处理。该方法的一个典型实现是把消息从队列中移走,避免被再次处理。
void backtype.storm.spout.ISpout. fail(Object msgId)
表示从此spout喷出的带有messageID的tuple未被完全处理。该方法的一个典型实现是把该消息再次放入队列,以便被再次发送。

backtype.storm.topology. IRichSpout
继承自ISpout与IComponent。

backtype.storm.spout. SpoutOutputCollector
用于spout的tuple喷射。注意与backtype.storm.task.OutputCollector的区别。
List<Integer> backtype.storm.spout.SpoutOutputCollector. emit(List<Object> tuple)
喷出一个tuple到默认的输出stream,此steam没有消息id,所以storm没有办法跟踪,因此对于这个tuple将永远不会调用ack()与fail()方法。

Bolt

backtype.storm.task. IBolt
这是bolt类的核心接口。有以下几个方法:
void backtype.storm.task.IBolt. prepare(Map stormConf, TopologyContext context, OutputCollector collector)
当这个组件的task在集群中的一台worker内被初始化的时候,该函数被调用。它向bolt提供了该bolt执行的环境。
void backtype.storm.task.IBolt. execute(Tuple input)
处理输入的一个单一tuple。


backtype.storm.topology. IRichBolt

继承自IBolt与IComponent。

backtype.storm.task.OutputCollector
输出收集器用于发射来自IRichBolt的tuple。

List<Integer> backtype.storm.task.OutputCollector.emit(Tuple anchor, List<Object> tuple)
喷射一个新的tuple到默认的抛锚在一个单一tuple的流上。

List<Integer> backtype.storm.task.OutputCollector.emit(String streamId, List<Object> tuple)

向指定的stream中喷射数据。

backtype.storm.topology.InputDeclarer.shuffleGrouping(String componentId)
用于声明接收哪些spout或bolt的输出作为该bolt的输入。

BoltDeclarer backtype.storm.topology.InputDeclarer.localOrShuffleGrouping(String componentId)

用于声明接收哪些spout或bolt的输出作为该bolt的输入。
BoltDeclarer backtype.storm.topology.InputDeclarer.fieldsGrouping(String componentId, String streamId, Fields fields)

用于声明接收指定spout或bolt的指定stream的指定fields作为该bolt的输入。
BoltDeclarer backtype.storm.topology.InputDeclarer.allGrouping(String componentId, String streamId)

用于声明接收指定spout或bolt的指定stream作为该bolt的输入。

例子


目录
相关文章
|
存储 机器学习/深度学习 人工智能
【前沿技术RPA】 一文了解UiPath 机器人企业框架 (REFramework)
本博文主要介绍 UiPath 机器人企业框架 (REFramework)。我们将讨论事务处理、调度程序和执行程序的概念,还会简要介绍 REFramework 可以完成的任务。
【前沿技术RPA】 一文了解UiPath 机器人企业框架 (REFramework)
|
前端开发 Java Linux
《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)
《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)
2643 0
《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)
|
8月前
|
人工智能 弹性计算 自然语言处理
OpenClaw怎样部署?阿里云推出快速部署方案,三步拥有超级AI助理!
阿里云推出OpenClaw(原Clawdbot)快速部署方案:7×24小时在线的“AI数字员工”,支持代码编写、文档处理、邮件管理、日程安排及多IM协同。三步即可完成部署——购服务器、配百炼密钥、图形化配置,零代码、高安全、全场景覆盖。
404 8
|
12月前
|
SQL 弹性计算 安全
阿里云服务器全方位介绍:云服务器是什么?应用场景、购买流程、活动价格及使用教程参考
阿里云服务器凭借其强大的性能、灵活的配置和丰富的应用场景,已成为众多企业和个人用户购买云服务器的首选云服务商。本文将从阿里云服务器的定义、应用场景、价格分析、租用购买流程以及使用技巧等方面进行全面解析,帮助用户更好地了解和应用阿里云服务器。
|
10月前
|
数据采集 前端开发 测试技术
Python网页自动化操作全攻略:从入门到实战
网页自动化可高效替代重复性浏览器操作,广泛应用于数据采集、测试、社交媒体管理等场景。本文详解Selenium、Requests+BeautifulSoup、Playwright三大工具的选型与实战技巧,涵盖元素定位、等待机制、反爬应对、多窗口处理及CI/CD集成,助你构建稳定高效的自动化流程。(238字)
897 0
|
12月前
|
传感器 人工智能 安全
万物联网
万物互联,智启未来。物联网正重塑生活与产业:从智能家居到智慧工厂,从城市治理到精准农业,通过感知、连接与智能,实现物物协同。融合AI、5G与数字孪生,迈向高效、智能的新纪元。
|
监控 前端开发 JavaScript
RUM实践-最大内容绘制(LCP)优化
LCP(最大内容绘制)衡量用户首次看到页面主内容的时间,理想值低于2.5秒。通过RUM工具收集数据,优化服务器响应、减少阻塞资源、图片压缩与预加载等手段,可有效提升LCP,改善用户体验。
阿里云注册域名创建信息模板提交审核时间说明
阿里云域名注册需要选择域名所有者,域名所有者可以是个人或企业,没有信息模板需要创建信息模板,信息模板提交后审核需要多久?
1162 0
阿里云注册域名创建信息模板提交审核时间说明
|
测试技术 API
FreeRTOS-stm32f407移植
FreeRTOS-stm32f407移植
FreeRTOS-stm32f407移植