你的位置:首页 > 数据库

[数据库]HBase的简单java操作


官方文档:http://hbase.apache.org/book.html

 

java简单操作hbase的表

 

 1 import org.apache.hadoop.conf.Configuration; 2 import org.apache.hadoop.hbase.*; 3 import org.apache.hadoop.hbase.client.*; 4 import org.apache.hadoop.hbase.filter.CompareFilter; 5 import org.apache.hadoop.hbase.filter.FilterList; 6 import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; 7 import org.junit.Before; 8 import org.junit.Test; 9  10 import java.io.IOException; 11 import java.util.ArrayList; 12 import java.util.Iterator; 13 import java.util.Random; 14  15 /** 16  * Created by Edward on 2016/6/19. 17 */ 18 public class TestHbase { 19  20   public static Configuration conf = null; 21   public static TableName table = TableName.valueOf("phone"); 22   public static Random random = new Random(); 23  24   @Before 25   public void setup() 26   { 27     //通过zookeeper集群,访问hbase 28     conf = HBaseConfiguration.create(); 29     conf.set("hbase.zookeeper.quorum", "node1,node2,node3"); 30     System.out.println("setup"); 31   } 32  33   @Test 34   public void createTable() throws IOException { 35     HBaseAdmin hBaseAdmin = new HBaseAdmin(conf); 36    if(hBaseAdmin.tableExists(table)) { 37       hBaseAdmin.disableTable(table); 38       hBaseAdmin.deleteTable(table); 39     } 40     //表 41     HTableDescriptor hTableDescriptor = new HTableDescriptor(table); 42     //列族 cf1 43     HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("cf1"); 44     hColumnDescriptor.setBlockCacheEnabled(true); 45     hColumnDescriptor.setBlocksize(128000); 46     hColumnDescriptor.setMaxVersions(10); 47     //表增加列族 48     hTableDescriptor.addFamily(hColumnDescriptor); 49     hBaseAdmin.createTable(hTableDescriptor); 50   } 51  52  53   @Test 54   /** 55    * 插入数据 56   */ 57   public void insert() throws IOException { 58  59     //创建htable对象 60     HTable hTable = new HTable(conf, this.table); 61     ArrayList<Put> list = new ArrayList<Put>(); 62  63     for(int i = 0; i<1000; i++) 64     { 65       //row_key 66       Put put = new Put(String.valueOf(i).getBytes()); 67       //column,value 68       put.add("cf1".getBytes(),"name".getBytes(),"ls".getBytes()); 69       put.add("cf1".getBytes(),"age".getBytes(), String.valueOf(i%100).getBytes()); 70       //把每个put对象放到列表中 71       list.add(put); 72     } 73     //把信息放到表中 74     hTable.put(list); 75   } 76  77  78   @Test 79   /** 80    * 查询 81   */ 82   public void search() throws IOException 83   { 84  85     HTable hTable = new HTable(conf, this.table); 86     // 创建row_key对应的get对象 87     Get get = new Get("123".getBytes()); 88     // 获取get结果 89     Result result = hTable.get(get); 90     //获取 column latest cell 91     Cell columnLatestCell = result.getColumnLatestCell("cf1".getBytes(), "name".getBytes()); 92     //使用 CellUtil 获取值 93     byte[] bytes = CellUtil.cloneValue(columnLatestCell); 94     System.out.println(new String(bytes)); 95   } 96  97  98   @Test 99   /**100    * 通过scan方法获取数据101    * **/102   public void search1() throws IOException103   {104     HTable hTable = new HTable(conf, this.table);105     //设置scan范围106     Scan scan = new Scan("400".getBytes(),"450".getBytes());107     //通过scan得到result scanner108     ResultScanner scanner = hTable.getScanner(scan);109     //使用迭代器110     Iterator<Result> iterator = scanner.iterator();111 112     while(iterator.hasNext())113     {114       Result result= iterator.next();115       Cell columnLatestCell = result.getColumnLatestCell("cf1".getBytes(), "age".getBytes());116       //获取列族中列对应的值117       byte[] bytes = CellUtil.cloneValue(columnLatestCell);118       //获取row_key119       byte[] bytes1 = CellUtil.cloneRow(columnLatestCell);120       System.out.println(new String(bytes)+" "+new String(bytes1));121     }122   }123 }