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(); } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31506529/viewspace-2214159/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- hbase 2.0.2安裝配置
- mac系統上hdfs java api的簡單使用MacJavaAPI
- HBase (三)之 API的使用API
- Hbase單機部署 java連線HbaseJava
- mongodb和hbase的簡單比較MongoDB
- Java使用ObjectMapper的簡單示例JavaObjectAPP
- Java File類的簡單使用Java
- java 反射簡單使用Java反射
- 使用 Python 構建一個簡單的 RESTful APIPythonRESTAPI
- HBase-Region太多的問題簡單總結
- Java使用Netty實現簡單的RPCJavaNettyRPC
- 使用者操作語音提示,Web Speech API 的簡單使用WebAPI
- 簡單聊下.NET6 Minimal API的使用方式API
- 使用Node.js寫一個簡單的api介面Node.jsAPI
- Hbase、Hive、Impala資料同步簡單示例Hive
- java 動態代理簡單使用Java
- 使用OAuth保護REST API並使用簡單的Angular客戶端OAuthRESTAPIAngular客戶端
- 使用Java實現簡單的鬥地主案例Java
- 利用Java的API實現HBase資料庫的增刪查改JavaAPI資料庫
- HBase學習的第四天--HBase的進階與APIAPI
- heygen模型介面 簡單使用 java版模型Java
- hbase - [04] java訪問hbaseJava
- 讓 API 測試變的簡單API
- 簡單說說Restful APIRESTAPI
- Fetch API 簡單封裝API封裝
- 實現一個簡單的 RESTful APIRESTAPI
- Java 簡單的rpc 一JavaRPC
- Java NIO的簡單demoJava
- Java的簡單理解(2)Java
- [譯] 使用 Node 和 OAuth 2.0 構建一個簡單的 REST APIOAuthRESTAPI
- 實現一個簡單的 jQuery 的 APIjQueryAPI
- api應該怎麼用?(簡單方便的API介面方法)API
- Kdevelop的簡單使用和簡單除錯dev除錯
- EasyExcel Java API 使用ExcelJavaAPI
- ElasticSearch Java API使用ElasticsearchJavaAPI
- ZooKeeper 使用 Java APIJavaAPI
- RocketMQ的簡單使用MQ
- OD的簡單使用