Hbase操作示例类

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List;  
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.hbase.HBaseConfiguration; 
import org.apache.hadoop.hbase.HColumnDescriptor; 
import org.apache.hadoop.hbase.HTableDescriptor; 
import org.apache.hadoop.hbase.KeyValue; 
import org.apache.hadoop.hbase.MasterNotRunningException; 
import org.apache.hadoop.hbase.ZooKeeperConnectionException; 
import org.apache.hadoop.hbase.client.Delete; 
import org.apache.hadoop.hbase.client.Get; 
import org.apache.hadoop.hbase.client.HBaseAdmin; 
import org.apache.hadoop.hbase.client.HTable; 
import org.apache.hadoop.hbase.client.HTablePool; 
import org.apache.hadoop.hbase.client.Put; 
import org.apache.hadoop.hbase.client.Result; 
import org.apache.hadoop.hbase.client.ResultScanner; 
import org.apache.hadoop.hbase.client.Scan; 
import org.apache.hadoop.hbase.filter.Filter; 
import org.apache.hadoop.hbase.filter.FilterList; 
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; 
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; 
import org.apache.hadoop.hbase.util.Bytes; 
 
public class JinTaoTest { 
 
    public static Configuration configuration; 
    static { 
        configuration = HBaseConfiguration.create(); 
        configuration.set("hbase.zookeeper.property.clientPort", "2181"); 
        configuration.set("hbase.zookeeper.quorum", "127.0.0.1"); 
        configuration.set("hbase.master", "127.0.0.1:600000"); 
    } 
 
    public static void main(String[] args) { 
         //createTable("tb2"); 
        // insertData("tb2"); 
        // QueryAll("wujintao"); 
        // QueryByCondition1("wujintao"); 
        //  QueryByCondition2("input_tb"); 
        //QueryByCondition3("wujintao"); 
       //deleteRow("input_tb","1150"); 
       // deleteByCondition("wujintao","abcdef"); 
    } 
 
    /* 创建表  @param tableName */ 
    public static void createTable(String tableName)
    { 
        System.out.println("start create table ......"); 
        try { 
            HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration); 
            if (hBaseAdmin.tableExists(tableName)) {// 如果存在要创建的表,那么先删除,再创建 
                hBaseAdmin.disableTable(tableName); 
                hBaseAdmin.deleteTable(tableName); 
                System.out.println(tableName + " is exist,detele...."); 
            } 
            HTableDescriptor tableDescriptor = new HTableDescriptor(tableName); 
            tableDescriptor.addFamily(new HColumnDescriptor("column1")); 
            tableDescriptor.addFamily(new HColumnDescriptor("column2")); 
            tableDescriptor.addFamily(new HColumnDescriptor("column3")); 
            hBaseAdmin.createTable(tableDescriptor); 
        } catch (MasterNotRunningException e) { 
            e.printStackTrace(); 
        } catch (ZooKeeperConnectionException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
         } 
         System.out.println("end create table ......"); 
     } 
  
    /* 插入数据 @param tableName */ 
    public static void insertData(String tableName)

        System.out.println("start insert data ......"); 
        HTablePool pool = new HTablePool(configuration, 1000); 
        HTable table = (HTable) pool.getTable(tableName); 
        Put put = new Put("key".getBytes());//'key'在实际中应该唯 一  一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值 
        put.add("column1".getBytes(), null, "aaa".getBytes());// 本行数据的第一列 
        put.add("column2".getBytes(), null, "bbb".getBytes());// 本行数据的第三列 
        put.add("column3".getBytes(), null, "ccc".getBytes());// 本行数据的第三列 
        try { 
            table.put(put); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        System.out.println("end insert data ......"); 
    } 
 
    /* 删除一张表 @param tableName */ 
    public static void dropTable(String tableName)
 { 
        try { 
            HBaseAdmin admin = new HBaseAdmin(configuration); 
            admin.disableTable(tableName); 
           admin.deleteTable(tableName); 
        } catch (MasterNotRunningException e) { 
            e.printStackTrace(); 
        } catch (ZooKeeperConnectionException e) { 
           e.printStackTrace(); 
       } catch (IOException e) { 
            e.printStackTrace(); 
        } 
 
   } 
   /* 根据 rowkey删除一条记录  @param tablename   @param rowkey   */ 
    public static void deleteRow(String tablename, String rowkey)
 { 
        try { 
            HTable table = new HTable(configuration, tablename); 
            List list = new ArrayList(); 
            Delete d1 = new Delete(rowkey.getBytes()); 
            list.add(d1);              
            table.delete(list); 
           System.out.println("删除行成功!"); 
            
        } catch (IOException e) { 
            e.printStackTrace(); 
       } 
        
 
    } 
 
    /* 组合条件删除  @param tablename @param rowkey     */ 
     public static void deleteByCondition(String tablename, String rowkey)
 { 
            //目前还没有发现有效的API能够实现 根据非rowkey的条件删除 这个功能能,还有清空表全部数据的API操作 
 
    } 
 
   /* 查询所有数据  @param tableName  */ 
    public static void QueryAll(String tableName)

      HTablePool pool = new HTablePool(configuration, 1000); 
       HTable table = (HTable) pool.getTable(tableName); 
      try { 
          ResultScanner rs = table.getScanner(new Scan()); 
          for (Result r : rs) { 
               System.out.println("获得到rowkey:" + new String(r.getRow())); 
             for (KeyValue keyValue : r.raw()) { 
                   System.out.println("列:" + new String(keyValue.getFamily()) 
                           + "====值:" + new String(keyValue.getValue())); 
               } 
           } 
        } catch (IOException e) { 
           e.printStackTrace(); 
       } 
    } 
 
   /* 单条件查询,根据rowkey查询唯一一条记录   @param tableName  */ 
    public static void QueryByCondition1(String tableName)
        HTablePool pool = new HTablePool(configuration, 1000); 
       HTable table = (HTable) pool.getTable(tableName); 
        try { 
           Get scan = new Get("abcdef".getBytes());// 根据rowkey查询 
           Result r = table.get(scan); 
          System.out.println("获得到rowkey:" + new String(r.getRow())); 
           for (KeyValue keyValue : r.raw()) { 
                System.out.println("列:" + new String(keyValue.getFamily()) 
                       + "====值:" + new String(keyValue.getValue())); 
            } 
        } catch (IOException e) { 
          e.printStackTrace(); 
        } 
   } 
 
   /* 单条件按查询,查询多条记录 * @param tableName   */ 
    public static void QueryByCondition2(String tableName)
 { 
       try { 
           HTablePool pool = new HTablePool(configuration, 1000); 
           HTable table = (HTable) pool.getTable(tableName); 
           Filter filter = new SingleColumnValueFilter(Bytes 
                    .toBytes("email"), null, CompareOp.EQUAL, Bytes 
                   .toBytes("ella@vc.com")); // 当列column1的值为aaa时进行查询 
          Scan s = new Scan(); 
            s.setFilter(filter); 
            ResultScanner rs = table.getScanner(s); 
            for (Result r : rs) { 
               System.out.println("获得到rowkey:" + new String(r.getRow())); 
               for (KeyValue keyValue : r.raw()) { 
                  System.out.println("列:" + new String(keyValue.getFamily()) 
                           + "====值:" + new String(keyValue.getValue())); 
                } 
            } 
       } catch (Exception e) { 
           e.printStackTrace(); 
       } 
 
   } 
 
   /* 组合条件查询  @param tableName  */ 
    public static void QueryByCondition3(String tableName)
       try { 
           HTablePool pool = new HTablePool(configuration, 1000); 
           HTable table = (HTable) pool.getTable(tableName); 
 
           List<Filter> filters = new ArrayList<Filter>(); 
 
           Filter filter1 = new SingleColumnValueFilter(Bytes 
                    .toBytes("column1"), null, CompareOp.EQUAL, Bytes 
                  .toBytes("aaa")); 
           filters.add(filter1); 
 
           Filter filter2 = new SingleColumnValueFilter(Bytes 
                   .toBytes("column2"), null, CompareOp.EQUAL, Bytes 
                   .toBytes("bbb")); 
           filters.add(filter2); 
 
           Filter filter3 = new SingleColumnValueFilter(Bytes 
                   .toBytes("column3"), null, CompareOp.EQUAL, Bytes 
                  .toBytes("ccc")); 
           filters.add(filter3); 
 
           FilterList filterList1 = new FilterList(filters); 
          Scan scan = new Scan(); 
           scan.setFilter(filterList1); 
          ResultScanner rs = table.getScanner(scan); 
          for (Result r : rs) { 
              System.out.println("获得到rowkey:" + new String(r.getRow())); 
               for (KeyValue keyValue : r.raw()) { 
                  System.out.println("列:" + new String(keyValue.getFamily()) 
                          + "====值:" + new String(keyValue.getValue())); 
               } 
            } 
           rs.close(); 
 
       } catch (Exception e) { 
           e.printStackTrace(); 
       } 
 
    } 
 

 

posted @ 2012-10-07 22:24  bobsoft  阅读(223)  评论(0编辑  收藏  举报