溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

hbase 2.0.2 java api怎么用

發(fā)布時(shí)間:2021-12-09 10:38:29 來(lái)源:億速云 閱讀:132 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)hbase 2.0.2 java api怎么用,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

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");
				//表描述器構(gòu)造器
				TableDescriptorBuilder  tdb  =TableDescriptorBuilder.newBuilder(tableName)  ;
				//列族描述起構(gòu)造器
				ColumnFamilyDescriptorBuilder cdb =  ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("user"));
				//獲得列描述起
				ColumnFamilyDescriptor  cfd = cdb.build();
				//添加列族
				tdb.setColumnFamily(cfd);
				//獲得表描述器
				TableDescriptor td = tdb.build();
				//創(chuàng)建表
				//admin.addColumnFamily(tableName, cfd); //給標(biāo)添加列族
				admin.createTable(td);
			}
			//關(guān)閉鏈接
	}
	//單條插入
	@Test
	public void insertOneData() throws IOException {
		//new 一個(gè)列  ,hgs_000為row key
		Put put = new Put(Bytes.toBytes("hgs_000"));
		//下面三個(gè)分別為,列族,列名,列值
		put.addColumn(Bytes.toBytes("testfm"),Bytes.toBytes("name") , Bytes.toBytes("hgs"));
		TableName tableName = TableName.valueOf("test");
		//得到 table
		Table table = conn.getTable(tableName);
		//執(zhí)行插入
		table.put(put);				
	}
	//插入多個(gè)列
	@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();
}
	//同一條數(shù)據(jù)的插入
	@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();
	}
	//數(shù)據(jù)的更新,hbase對(duì)數(shù)據(jù)只有追加,沒(méi)有更新,但是查詢(xún)的時(shí)候會(huì)把最新的數(shù)據(jù)返回給哦我們
	@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();
	}
	
	//刪除數(shù)據(jù)
	@Test
	public void deleteData() throws IOException {
		Table table = conn.getTable(TableName.valueOf("test"));
		//參數(shù)為 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"));
		//刪除某一行的列族內(nèi)容
		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();
	}
	
	//查詢(xún)
	//
	@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("-----------------------------------------");
		}
	}
	//過(guò)濾器
	
	@Test
	//列值過(guò)濾器
	public void singColumnFilter() throws IOException {
		Table table = conn.getTable(TableName.valueOf("test"));
		Scan scan = new Scan();
		//下列參數(shù)分別為,列族,列名,比較符號(hào),值
		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過(guò)濾器
	@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("-----------------------------------------");
		}
	}
	//列名前綴過(guò)濾器
	@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("-----------------------------------------");
		}
	}
	
	//過(guò)濾器集合
	@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();
	}
}	
	

關(guān)于“hbase 2.0.2 java api怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI