java 对Hbase的基本操作
java 对Hbase的基本操作
Java对Hbase的各种操作都是通过HTable实现的,由于创建HTable是有消耗的,因此推荐只创建一个HTable的实例,如果必须使用多个HTable实例,可以使用HTablePool,本文不对HTablePool进行介绍。
创建表:
创建表是通过HBaseAdmin类实现的,通过HBaseAdmin 类主要是对于表的管理操作。
1 public static void createTable(String tableName, String[] cfs) throws IOException{ 2 HBaseAdmin admin = new HBaseAdmin(configuration); 3 if (admin.tableExists(tableName)) { 4 System.out.println("table already exists" ); 5 } else { 6 HTableDescriptor descriptor = new HTableDescriptor(tableName); 7 for ( int i = 0; i < cfs.length; ++ i){ 8 descriptor.addFamily( new HColumnDescriptor(cfs[i])); 9 } 10 admin.createTable(descriptor); 11 } 12 }
HBaseAdmin还包含了各种操作表的API,包括删除表,删除列等,有兴趣的可以看他的官方API,这里就不再讨论了。
添加数据:
添加数据通过HTable的put操作,添加Put对象;
void put(Put put) throws IOException
对于Put类,包含了多个构造函数使用,在这里我们只是使用了他的第一个构造函数。
Put( byte [] row) Put( byte [] row, RowLock rowLock) Put( byte [] row, long ts) Put( byte [] row, long ts, RowLock rowLock)
像Put对象添加数据使用add函数:
Put add( byte [] family, byte [] qualifier, byte [] value) Put add( byte [] family, byte [] qualifier, long ts, byte [] value) Put add(KeyValue kv) throws IOException
添加数据操作:
1 public static void putData(String tableName) throws IOException{ 2 HTable table = new HTable(configuration, tableName); 3 Put put = new Put(Bytes.toBytes("row1" )); 4 put.add(Bytes.toBytes("cf"), Bytes.toBytes("a"), Bytes.toBytes("v1" )); 5 table.put(put); 6 table.close(); 7 }
获取数据:
对于获取数据,需要喜欢使用HTable的get函数:
Result get(Get get) throws IOException
Get类的构造函数相对与Put少了ts
Get( byte [] row) Get( byte [] row, RowLock rowLock)
获取数据的操作:
1 public static void getData(String tableName) throws IOException{ 2 HTable table = new HTable(configuration, tableName); 3 Get get = new Get(Bytes.toBytes("row1" )); 4 Result result = table.get(get); 5 String value = new String(result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("a" ))); 6 System.out.println(value); 7 table.close(); 8 }
对于扫描全表则需要使用scanner了。
public static void scannerData(String tablename) throws IOException { HTable table = new HTable(configuration, tablename); Scan s = new Scan(); ResultScanner rs = table.getScanner(s); for (Result r : rs) { KeyValue[] kv = r.raw(); for ( int i = 0; i < kv.length; i++ ) { System.out.print( new String(kv[i].getRow()) + " " ); System.out.print( new String(kv[i].getFamily()) + ":" ); System.out.print( new String(kv[i].getQualifier()) + " " ); System.out.print(kv[i].getTimestamp() + " " ); System.out.println( new String(kv[i].getValue())); } } }
分类: hadoop , hbase
标签: java
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于java 对Hbase的基本操作的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did46954