Twitter Stormの機能まとめメモ(Boltによるデータ処理、概要)
最近うだうだ呟いているののまとめその2です。
今度はデータを取得する側ではなく、処理する側を。
Boltによるデータ処理
Stormではデータを処理する際には、Boltというコンポーネントを使用する。
Boltは一つではなく、複数の階層に分けて定義することができる。
(下図参照)
Boltはおそらく起動時に下記のメソッドが呼ばれる。
public void prepare(Map stormConf, TopologyContext context, OutputCollector collector)
Boltはデータを受け取るたびに下記のメソッドが呼ばれることとなる。
public void execute(Tuple tuple)
Boltから更に他のBoltに渡したい場合はフィールドとして保持している
SpoutOutputCollectorに渡すことで可能。
_collector.emit(new Values(result1,result2));
尚、StormはTupleの各カラム(?)に対してdeclareOutputFieldsを用いることで
名前をつけることが可能です。
下記のようにして名前をつける模様。
これはBoltだけでなく、Spoutでも同じです。
そのため、後で名前を利用した処理(get〜〜ByFieldメソッド)が可能となります。
public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declare(new Fields("obj", "count")); }
メッセージ処理が保証されるとは、
おそらく必ずいずれかのBoltで処理されることを保証する事を示すもののようです。
・・・と、今日はここまで。Boltのもう少し詳細はこの次に。