码迷,mamicode.com
首页 > 其他好文 > 详细

storm 常用类

时间:2015-06-10 15:48:49      阅读:2505      评论:0      收藏:0      [点我收藏+]

标签:

获得

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

常用类

backtype.storm.topology.TopologyBuilder
用来建立topology。
SpoutDeclarer backtype.storm.topology.TopologyBuilder.setSpout(String id, IRichSpout spout, Number parallelism_hint)
给topology设置spout。parallelism_hint为将要执行这个spout的任务数,每个任务对应着一个线程。
BoltDeclarer 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(OutputFieldsDeclarer declarer)
声明当前topology的所有stream的输出模式。

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的流上。

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

例子

storm 常用类

标签:

原文地址:http://blog.csdn.net/chuchus/article/details/46440679

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!