您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
这篇文章将为大家详细讲解有关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; @Before public 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(); } } @Test public 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); } //关闭链接 } //单条插入 @Test public void insertOneData() throws IOException { //new 一个列 ,hgs_000为row key Put put = new Put(Bytes.toBytes("hgs_000")); //下面三个分别为,列族,列名,列值 put.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("hgs")); TableName tableName = TableName.valueOf("test"); //得到 table Table table = conn.getTable(tableName); //执行插入 table.put(put); } //插入多个列 @Test public 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(); } //同一条数据的插入 @Test public 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对数据只有追加,没有更新,但是查询的时候会把最新的数据返回给哦我们 @Test public 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(); } //删除数据 @Test public 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(); } //查询 // @Test public 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"))) } //全表扫描 @Test public 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过滤器 @Test public 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("-----------------------------------------"); } } //列名前缀过滤器 @Test public 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("-----------------------------------------"); } } //过滤器集合 @Test public 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("-----------------------------------------"); } } @After public void closeConn() throws IOException { conn.close(); } }
关于“hbase 2.0.2 java api怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。