読者です 読者をやめる 読者になる 読者になる

夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

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のもう少し詳細はこの次に。