这篇文章将为大家详细讲解有关hbase 2.0.2 java api怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
package com.hbase.test;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CompareOperator;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Admin;import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;import org.apache.hadoop.hbase.client.Delete;import org.apache.hadoop.hbase.client.Get;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.client.Table;import org.apache.hadoop.hbase.client.TableDescriptor;import org.apache.hadoop.hbase.client.TableDescriptorBuilder;import org.apache.hadoop.hbase.filter.ColumnPrefixFilter;import org.apache.hadoop.hbase.filter.FilterList;import org.apache.hadoop.hbase.filter.FilterList.Operator;import org.apache.hadoop.hbase.filter.RegexStringComparator;import org.apache.hadoop.hbase.filter.RowFilter;import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;import org.apache.hadoop.hbase.util.Bytes;import org.junit.After;import org.junit.Before;import org.junit.Test;public class HbaseTest {Configuration conf = null;Connection conn = null;@Beforepublic void getConfigAndConnection() {conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "bigdata01,bigdata02,bigdata03");conf.set("hbase.zookeeper.property.clientPort", "2181");try {conn = ConnectionFactory.createConnection(conf);} catch (IOException e) {e.printStackTrace();}}@Testpublic void createTable() throws IOException {Admin admin = conn.getAdmin();if(!admin.isTableAvailable(TableName.valueOf("test"))) {TableName tableName = TableName.valueOf("test");//表描述器构造器TableDescriptorBuilder tdb =TableDescriptorBuilder.newBuilder(tableName) ;//列族描述起构造器ColumnFamilyDescriptorBuilder cdb = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("user"));//获得列描述起ColumnFamilyDescriptor cfd = cdb.build();//添加列族tdb.setColumnFamily(cfd);//获得表描述器TableDescriptor td = tdb.build();//创建表//admin.addColumnFamily(tableName, cfd); //给标添加列族admin.createTable(td);}//关闭链接}//单条插入@Testpublic void insertOneData() throws IOException {//new 一个列 ,hgs_000为row keyPut put = new Put(Bytes.toBytes("hgs_000"));//下面三个分别为,列族,列名,列值put.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("hgs"));TableName tableName = TableName.valueOf("test");//得到 tableTable table = conn.getTable(tableName);//执行插入table.put(put);}//插入多个列@Testpublic void insertManyData() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));List<Put> puts = new ArrayList<Put>();Put put1 = new Put(Bytes.toBytes("hgs_001"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("wd"));Put put2 = new Put(Bytes.toBytes("hgs_001"));put2.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("age") , Bytes.toBytes("25"));Put put3 = new Put(Bytes.toBytes("hgs_001"));put3.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("weight") , Bytes.toBytes("60kg"));Put put4 = new Put(Bytes.toBytes("hgs_001"));put4.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("sex") , Bytes.toBytes("男"));puts.add(put1);puts.add(put2);puts.add(put3);puts.add(put4);table.put(puts);table.close();}//同一条数据的插入@Testpublic void singleRowInsert() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Put put1 = new Put(Bytes.toBytes("hgs_005"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("cm"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("age") , Bytes.toBytes("22"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("weight") , Bytes.toBytes("88kg"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("sex") , Bytes.toBytes("男"));table.put(put1);table.close();}//数据的更新,hbase对数据只有追加,没有更新,但是查询的时候会把最新的数据返回给哦我们@Testpublic void updateData() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Put put1 = new Put(Bytes.toBytes("hgs_002"));put1.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("weight") , Bytes.toBytes("63kg"));table.put(put1);table.close();}//删除数据@Testpublic void deleteData() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));//参数为 row key//删除一列Delete delete1 = new Delete(Bytes.toBytes("hgs_000"));delete1.addColumn(Bytes.toBytes("testfm"), Bytes.toBytes("weight"));//删除多列Delete delete2 = new Delete(Bytes.toBytes("hgs_001"));delete2.addColumns(Bytes.toBytes("testfm"), Bytes.toBytes("age"));delete2.addColumns(Bytes.toBytes("testfm"), Bytes.toBytes("sex"));//删除某一行的列族内容Delete delete3 = new Delete(Bytes.toBytes("hgs_002"));delete3.addFamily(Bytes.toBytes("testfm"));//删除一整行Delete delete4 = new Delete(Bytes.toBytes("hgs_003"));table.delete(delete1);table.delete(delete2);table.delete(delete3);table.delete(delete4);table.close();}//查询//@Testpublic void querySingleRow() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));//获得一行Get get = new Get(Bytes.toBytes("hgs_000"));Result set = table.get(get);Cell[] cells = set.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+ Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}table.close();//Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password")))}//全表扫描@Testpublic void scanTable() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();//scan.addFamily(Bytes.toBytes("info"));//scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("password"));//scan.setStartRow(Bytes.toBytes("wangsf_0"));//scan.setStopRow(Bytes.toBytes("wangwu"));ResultScanner rsacn = table.getScanner(scan);for(Result rs:rsacn) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+ Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//过滤器@Test//列值过滤器public void singColumnFilter() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();//下列参数分别为,列族,列名,比较符号,值SingleColumnValueFilter filter = new SingleColumnValueFilter( Bytes.toBytes("testfm"), Bytes.toBytes("name"), CompareOperator.EQUAL, Bytes.toBytes("wd")) ;scan.setFilter(filter);ResultScanner scanner = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+ Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//row key过滤器@Testpublic void rowkeyFilter() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();RowFilter filter = new RowFilter(CompareOperator.EQUAL,new RegexStringComparator("^hgs_00*"));scan.setFilter(filter);ResultScanner scanner = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+ Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//列名前缀过滤器@Testpublic void columnPrefixFilter() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();ColumnPrefixFilter filter = new ColumnPrefixFilter(Bytes.toBytes("name"));scan.setFilter(filter);ResultScanner scanner = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+ Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}//过滤器集合@Testpublic void FilterSet() throws IOException {Table table = conn.getTable(TableName.valueOf("test"));Scan scan = new Scan();FilterList list = new FilterList(Operator.MUST_PASS_ALL);SingleColumnValueFilter filter1 = new SingleColumnValueFilter( Bytes.toBytes("testfm"), Bytes.toBytes("age"), CompareOperator.GREATER, Bytes.toBytes("23")) ;ColumnPrefixFilter filter2 = new ColumnPrefixFilter(Bytes.toBytes("weig"));list.addFilter(filter1);list.addFilter(filter2);scan.setFilter(list);ResultScanner scanner = table.getScanner(scan);for(Result rs:scanner) {String rowkey = Bytes.toString(rs.getRow());System.out.println("row key :"+rowkey);Cell[] cells = rs.rawCells();for(Cell cell : cells) {System.out.println(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())+"::"+ Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));}System.out.println("-----------------------------------------");}}@Afterpublic void closeConn() throws IOException {conn.close();}}
关于“hbase 2.0.2 java api怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。