package backtype.storm.contrib.hbase.examples;
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.contrib.hbase.bolts.HBaseBolt;
import backtype.storm.contrib.hbase.utils.TupleTableConfig;
import backtype.storm.topology.TopologyBuilder;
import backtype.storm.utils.Utils;
/**
* An example non-transactional topology that uses the {@link HBaseBolt} to
* insert a stream of shortened URL's into a HBase table called 'shorturl'.
* <p>
* Assumes the HBase table has been created.<br>
* <tt>create 'shorturl', {NAME => 'data', VERSIONS => 3}, {NAME => 'daily', VERSION => 1, TTL => 604800}</tt>
*/
public class HBaseExampleTopology {
/**
* @param args
*/
public static void main(String[] args) {
TopologyBuilder builder = new TopologyBuilder();
// Add test spout
builder.setSpout("spout", new TestSpout(), 1);
// Build TupleTableConifg
TupleTableConfig config = new TupleTableConfig("shorturl", "shortid");
config.setBatch(false);
config.addColumn("data", "url");
config.addColumn("data", "user");
config.addColumn("data", "date");
// Add HBaseBolt
builder.setBolt("hbase", new HBaseBolt(config), 1).shuffleGrouping("spout");
Config stormConf = new Config();
stormConf.setDebug(true);
LocalCluster cluster = new LocalCluster();
cluster
.submitTopology("hbase-example", stormConf, builder.createTopology());
Utils.sleep(10000);
cluster.shutdown();
}
}