Storm的Spout和Bolt中的方法

一、Spout中的方法

1.open

当一个Task被初始化的时候会调用此open方法。一般都会在此方法中对发送Tuple的对象SpoutOutputCollector和配置对象TopologyContext初始化。

Storm的Spout和Bolt中的方法_第1张图片

2.declareOutputFields

   此方法用于声明当前SpoutTuple发送流。Stream流的定义是通过OutputFieldsDeclare.declareStream方法完成的,其中的参数包括了发送的域Fields


3.getComponentConfiguration

    此方法用于声明针对当前组件的特殊的Configuration配置。

Storm的Spout和Bolt中的方法_第2张图片

4.nextTuple

    这是Spout类中最重要的一个方法。发射一个TupleTopology都是通过这个方法来实现的

Storm的Spout和Bolt中的方法_第3张图片

5.ack

6.fail

二、Bolt中的方法

1.prepare

   此方法和Spout中的open方法类似,为Bolt提供了OutputCollector,用来从Bolt中发送Tuple。执行在execute方法之前

 

2.declareOutputFields

   用于声明当前Bolt发送的Tuple中包含的字段

 

3.execute

   这是Bolt中最关键的一个方法,对于Tuple的处理都可以放到此方法中进行。具体的发送也是通过emit方法来完成的。此时,有两种情况,一种是emit方法中有两个参数,另一个种是有一个参数。

(1)emit有一个参数:此唯一的参数是发送到下游BoltTuple,此时,由上游发来的旧的Tuple在此隔断,新的Tuple和旧的Tuple不再属于同一棵Tuple树。新的Tuple另起一个新的Tuple树。

(2)emit有两个参数:第一个参数是旧的Tuple的输入流,第二个参数是发往下游Bolt的新的Tuple流。此时,新的Tuple和旧的Tuple是仍然属于同一棵Tuple树,即,如果下游的Bolt处理Tuple失败,则会向上传递到当前Bolt,当前Bolt根据旧的Tuple流继续往上游传递,申请重发失败的Tuple。保证Tuple处理的可靠性。

Storm的Spout和Bolt中的方法_第4张图片

4.getComponentConfiguration

  此方法用于声明针对当前组件的特殊的Configuration配置

Storm的Spout和Bolt中的方法_第5张图片

你可能感兴趣的:(Storm)