Friday, 31 July 2015

Local File reading from Storm Spout


in additon to my earlier if we want to do testing the topology using reading the file from local file system then we can use below bolt code. this is using java basic file api.


package com.atul.wc;



import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;

import backtype.storm.spout.SpoutOutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseRichSpout;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Values;


public class SentenceSpout extends BaseRichSpout {

    private SpoutOutputCollector collector;
 
    private int index = 0;
    private BufferedReader br;
    public void declareOutputFields(OutputFieldsDeclarer declarer) {
        declarer.declare(new Fields("sentence"));
    }

    public void open(Map config, TopologyContext context,
            SpoutOutputCollector collector) {
    try {
    br = new BufferedReader(new FileReader("D://test.txt"));

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
               // Charset.defaultCharset().name());
        this.collector = collector;
    }

    public void nextTuple() {
    String line;
try {
while ((line = br.readLine()) != null){
this.collector.emit(new Values(line));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    }
}

No comments:

Post a Comment