HBase Java API使用操作例子


通过对HBase API的使用,下面例子举例了常见对HBase的操作,如下所示:

  1. package net.bkjia.www;  
  2.   
  3. import org.apache.Hadoop.conf.Configuration;  
  4. import org.apache.hadoop.hbase.HBaseConfiguration;  
  5. import org.apache.hadoop.hbase.HColumnDescriptor;  
  6. import org.apache.hadoop.hbase.HTableDescriptor;  
  7. import org.apache.hadoop.hbase.KeyValue;  
  8. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  9. import org.apache.hadoop.hbase.client.HTable;  
  10. import org.apache.hadoop.hbase.client.Result;  
  11. import org.apache.hadoop.hbase.client.ResultScanner;  
  12. import org.apache.hadoop.hbase.client.Scan;  
  13. import org.apache.hadoop.hbase.io.BatchUpdate;  
  14.   
  15. public class HBaseDBDao {  
  16.       
  17.     //定义配置对象HBaseConfiguration   
  18.     static HBaseConfiguration cfg =null;  
  19.     static {  
  20.         Configuration configuration = new Configuration();  
  21.         cfg = new HBaseConfiguration(configuration);  
  22.     }  
  23.       
  24.     //创建一张表,指定表名,列族   
  25.     public static void createTable(String tableName,String columnFarily)throws Exception{  
  26.         HBaseAdmin admin = new HBaseAdmin(cfg);  
  27.         if(admin.tableExists(tableName)){  
  28.             System.out.println(tableName+"不存在!");  
  29.             System.exit(0);  
  30.         }else{  
  31.             HTableDescriptor  tableDesc = new HTableDescriptor(tableName);  
  32.             tableDesc.addFamily(new HColumnDescriptor(columnFarily+":"));  
  33.             System.out.println("创建表成功!");  
  34.         }  
  35.     }  
  36.       
  37.     //添加数据,通过HTable。和BatchUpdate为已经存在的表添加数据data   
  38.     public static void addData(String tableName,String row,String columnFamily,String column,String data)throws Exception{  
  39.         HTable table = new HTable(cfg,tableName);  
  40.         BatchUpdate update = new BatchUpdate(row);  
  41.         update.put(columnFamily+":"+column, data.getBytes());  
  42.         table.commit(update);  
  43.         System.out.println("添加成功!");  
  44.     }  
  45.       
  46.     //显示所有数据,通过HTable Scan类获取已有表的信息   
  47.     public static void getAllData(String tableName)throws Exception{  
  48.         HTable table = new HTable(cfg,tableName);  
  49.         Scan scan = new Scan();  
  50.         ResultScanner rs = table.getScanner(scan);  
  51.         for(Result r:rs){  
  52.             for(KeyValue kv:r.raw()){  
  53.                 System.out.println(new String(kv.getColumn())+new String(kv.getValue()));  
  54.             }  
  55.         }  
  56.     }  
  57.       
  58.     //测试函数   
  59.     public static void main(String[] args){  
  60.         try{  
  61.             String tableName = "student";  
  62.             HBaseDBDao.createTable(tableName, "c1");  
  63.             HBaseDBDao.addData(tableName, "row1""c1""1""this is row 1 column c1:c1");  
  64.             HBaseDBDao.getAllData(tableName);  
  65.         }catch(Exception e){  
  66.             e.printStackTrace();  
  67.         }  
  68.     }  
  69. }  

相关内容