package com.hadooparchitecturebook.movingavg.topology;
import backtype.storm.task.OutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseRichBolt;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
import java.util.Map;
/**
* For each tick tuple in input stream, parse the ticker and closing price,
* and emit into topology.
*/
public class ParseTicksBolt extends BaseRichBolt {
private OutputCollector outputCollector;
@Override
public void prepare(Map config,
TopologyContext topologyContext,
OutputCollector collector) {
outputCollector = collector;
}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("ticker", "price"));
}
@Override
public void execute(Tuple tuple) {
String tick = tuple.getStringByField("tick");
String[] parts = tick.split(",");
outputCollector.emit(new Values(parts[0], parts[4]));
outputCollector.ack(tuple);
}
}