Package backtype.storm.contrib.hbase.examples

Source Code of backtype.storm.contrib.hbase.examples.HBaseCountersBatchTopology

package backtype.storm.contrib.hbase.examples;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.contrib.hbase.bolts.HBaseCountersBatchBolt;
import backtype.storm.contrib.hbase.utils.TupleTableConfig;
import backtype.storm.testing.MemoryTransactionalSpout;
import backtype.storm.transactional.TransactionalTopologyBuilder;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Values;

/**
* An example transactional topology that uses the
* {@link HBaseCountersBatchBolt} to increment the following counters in a HBase
* table:
* <ul>
* <li>cf:'data' cq:'clicks'
* <li>cf:'daily' cq:'YYYYMMDD'
* </ul>
* The example assumes that the following table exists in HBase:<br>
* <tt>create 'shorturl', {NAME => 'data', VERSIONS => 3}, {NAME => 'daily', VERSION => 1, TTL => 604800}</tt>
*/
public class HBaseCountersBatchTopology {
  @SuppressWarnings("serial")
  protected final static Map<Integer, List<List<Object>>> values = new HashMap<Integer, List<List<Object>>>() {{
    put(0, new ArrayList<List<Object>>() {{
      add(new Values("http://bit.ly/ZK6t", "www.arsenal.com/home", "kinley", "20120816"));
      add(new Values("http://bit.ly/LsaBa", "www.baltimoreravens.com/", "kinley", "20120816"));
      add(new Values("http://bit.ly/2VL7eA", "www.49ers.com/", "kinley", "20120816"));
      add(new Values("http://bit.ly/9ZJhuY", "www.buccaneers.com/index.html", "kinley", "20120816"));
      add(new Values("http://atmlb.com/7NG4sm", "baltimore.orioles.mlb.com/", "kinley", "20120816"));
    }});
    put(1, new ArrayList<List<Object>>() {{
      add(new Values("http://bit.ly/ZK6t", "www.arsenal.com/home", "kinley", "20120817"));
      add(new Values("http://bit.ly/ZK6t", "www.arsenal.com/home", "kinley", "20120817"));
      add(new Values("http://bit.ly/ZK6t", "www.arsenal.com/home", "kinley", "20120817"));
    }});
    put(2, new ArrayList<List<Object>>() {{
      add(new Values("http://bit.ly/LsaBa", "www.baltimoreravens.com/", "kinley", "20120820"));
      add(new Values("http://bit.ly/LsaBa", "www.baltimoreravens.com/", "kinley", "20120820"));
      add(new Values("http://bit.ly/LsaBa", "www.baltimoreravens.com/", "kinley", "20120903"));
    }});
  }};
 
  /**
   * @param args
   * @throws InterruptedException
   */
  public static void main(String[] args) throws InterruptedException {
    // Add transactional spout
    MemoryTransactionalSpout spout = new MemoryTransactionalSpout(values,
        new Fields("shortid", "url", "user", "date"), 3);

    TransactionalTopologyBuilder builder = new TransactionalTopologyBuilder(
        "shorturl-count", "spout", spout, 2);

    // Build TupleTableConifg
    TupleTableConfig ttConfig = new TupleTableConfig("shorturl", "shortid");
    ttConfig.setBatch(false);
    ttConfig.addColumn("data", "clicks");
    ttConfig.addColumn("daily", "date");

    builder.setBolt("hbase-counters", new HBaseCountersBatchBolt(ttConfig), 2)
        .fieldsGrouping("spout", new Fields("shortid"));

    LocalCluster cluster = new LocalCluster();

    Config stormConfig = new Config();
    stormConfig.setDebug(true);
    stormConfig.setMaxSpoutPending(3);

    cluster.submitTopology("hbase-example", stormConfig,
        builder.buildTopology());

    Thread.sleep(10000);
    cluster.shutdown();
  }

}
TOP

Related Classes of backtype.storm.contrib.hbase.examples.HBaseCountersBatchTopology

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.