HBase 客户端API --写的工具类


代码如下,可以直接拿来使用:


package hbase1;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.HTablePool;
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.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.RowFilter;


@SuppressWarnings("deprecation")
public class HBaseTest {
	
	HBaseAdmin admin=null;
	Configuration conf=null;
	public HBaseTest(){
		try {
		conf = new Configuration();
		conf.set("hbase.zookeeper.quorum", "192.168.1.10:2181");
		conf.set("hbase.rootdir", "hdfs://192.168.1.10:9000/hbase");
		admin = new HBaseAdmin(conf);
		} catch (Exception e) {
		e.printStackTrace();
		}
		}
	
	public static void main(String[] args) throws Exception {
		HBaseTest hBase=new HBaseTest();
		//创建表
		hBase.createTable("stu","cf");
		//遍历表
	//	hBase.getAllTable();
		//插入一条数据
	//	hBase.addOneRecord("stu","key1","cf","name","baozi");
	//	hBase.addOneRecord("stu","key1","cf","age","23");
		//得到一条数据
	//	hBase.getKey("stu","key1");
		//得到所有数据
	//	hBase.getAllData("stu");
		//删除一条记录
	//	hBase.deleteOneRecord("stu","key1");
		//删除表
	//	hBase.deleteTable("stu");
		//scan过滤器的使用
	//	hBase.getScanData("stu","cf","name");
	//rowFilter的使用
	//	hBase.getRowFilter("waln_log","^*_201303131459\\d*$");
		
	}
	/**
	 * rowFilter使用
	 * @param tableName
	 * @param reg
	 * @throws Exception
	 */
	private void getRowFilter(String tableName, String reg) throws Exception {
		@SuppressWarnings("resource")
		HTable hTable=new HTable(conf, tableName);
		Scan scan=new Scan();
		RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator(reg));
		scan.setFilter(rowFilter);
		ResultScanner scanner = hTable.getScanner(scan);
		for (Result result : scanner) {
			System.out.println(new String(result.getRow()));
		}
	}
	/**
	 * scan过滤器
	 * @param tableName
	 * @param family
	 * @param qualifier
	 * @throws Exception
	 */
	private void getScanData(String tableName, String family, String qualifier) throws Exception {
		@SuppressWarnings("resource")
		HTable hTable = new HTable(conf, tableName);
		Scan scan = new Scan();
		scan.addColumn(family.getBytes(), qualifier.getBytes());
		ResultScanner scanner = hTable.getScanner(scan);
		for (Result result : scanner) {
			if(result.raw().length==0){
				System.out.println(tableName+" 表数据为空!");
			}else{
				for (KeyValue kv: result.raw()){
					System.out.println(new String(kv.getKey())+"\t"+new String(kv.getValue()));
				}
			}
		}
	}
	/**
	 * 删除表
	 * @param tableName
	 */
	private void deleteTable(String tableName) {
		try {
			if(admin.tableExists(tableName)){
				admin.disableTable(tableName);
				admin.deleteTable(tableName);
				System.out.println("表:"+tableName+" 删除成功");
			}
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("表"+tableName+"删除失败");
		}
	}

	/**
	 * 删除一条记录
	 * @param tableName
	 * @param rowKey
	 */
	public void deleteOneRecord(String tableName, String rowKey) {
		@SuppressWarnings("resource")
		HTablePool hTablePool = new HTablePool(conf, 1000);
		HTableInterface table = hTablePool.getTable(tableName);
		Delete delete = new Delete(rowKey.getBytes());
		try {
			table.delete(delete);
			System.out.println(rowKey+"记录删除成功!");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(rowKey+"记录删除失败!");
		}
	}
	
	/**
	 * 得到全部数据
	 * @param string
	 * @throws Exception 
	 */
	private void getAllData(String tableName) throws Exception {
		@SuppressWarnings("resource")
		HTable hTable = new HTable(conf, tableName);
		Scan scan = new Scan();
		ResultScanner scanner = hTable.getScanner(scan);
		for (Result result : scanner) {
			if(result.raw().length==0){
				System.out.println(tableName+"  为空");
			}else{
				for (KeyValue kvKeyValue : result.raw()) {
					System.out.println(new String(kvKeyValue.getKey())+"\t"+new String(kvKeyValue.getValue()));
				}
			}
		}
	}

	/**
	 * 得到一条数据
	 * @param string
	 * @param string2
	 */
	 private void getKey(String tableName, String rowkey) {
		@SuppressWarnings("resource")
		HTablePool hTablePool = new HTablePool(conf, 1000);
		HTableInterface table = hTablePool.getTable(tableName);
		Get get = new Get(rowkey.getBytes());
		try {
			Result result = table.get(get);
			if(result.raw().length==0){
				System.out.println("行键"+rowkey+"内容为空!");
			}else{
				for (KeyValue kv : result.raw()) {
					System.out.println(new String(kv.getKey())+"\t"+new String(kv.getValue()));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	  * 插入一条数据
	  * @param string
	  * @param string2
	  * @param string3
	  * @param string4
	  * @param string5
	  */
	 private void addOneRecord(String tableName, String rowkey, String column,
			String qua, String value) {
		 @SuppressWarnings({ "resource" })
		HTablePool hTablePool = new HTablePool(conf,1000);
		 HTableInterface table = hTablePool.getTable(tableName);
		 Put put = new Put(rowkey.getBytes());
		 put.add(column.getBytes(), qua.getBytes(), value.getBytes());
		 try {
			table.put(put);
			System.out.println("行键"+rowkey+" 内容插入成功!");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("行键 "+rowkey+" 插入内容失败!");
		}
	}

	/**
	  * 遍历表
	  * @return
	  * @throws Exception
	  */
	private List<String> getAllTable() throws Exception {
		ArrayList<String> tables=new ArrayList<String>();
		if(admin!=null){
			HTableDescriptor[] listTables = admin.listTables();
			if(listTables.length>0){
				for (HTableDescriptor tableDesc : listTables) {
					tables.add(tableDesc.getNameAsString());
					System.out.println(tableDesc.getNameAsString());
				}
			}
		}
		return tables;
	}
	//  /hbase/data/default/stu

	/**
	 * 创建表
	 * @param tableName
	 * @param column
	 * @throws Exception
	 */
	private void createTable(String tableName, String column) throws Exception {
		if(admin.tableExists(tableName)){
			System.out.println("表已经存在!");
		}else{
			HTableDescriptor tableDesc=new HTableDescriptor(tableName);
			tableDesc.addFamily(new HColumnDescriptor(column.getBytes()));
			admin.createTable(tableDesc);
			System.out.println(tableName+"创建成功!");
		}
	}
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值