<menu id="u2y6m"></menu>
<tt id="u2y6m"><rt id="u2y6m"></rt></tt>
  • <input id="u2y6m"></input><tt id="u2y6m"><blockquote id="u2y6m"></blockquote></tt>
    <bdo id="u2y6m"><small id="u2y6m"></small></bdo>
  • <blockquote id="u2y6m"><optgroup id="u2y6m"></optgroup></blockquote>
  • 溫馨提示×

    hbase 2.0.2 java api怎么用

    發布時間:2021-12-09 10:38:29 來源:億速云 閱讀:63 作者:小新 欄目:大數據

    這篇文章將為大家詳細講解有關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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。