hbase数据库scan操作_HBase常用的数据库API操作

packagecn.luxh.app.util;importjava.io.IOException;importjava.util.Arrays;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.HColumnDescriptor;importorg.apache.hadoop.hbase.HTableDescriptor;importorg.apache.hadoop.hbase.MasterNotRunningException;importorg.apache.hadoop.hbase.ZooKeeperConnectionException;importorg.apache.hadoop.hbase.client.Get;importorg.apache.hadoop.hbase.client.HBaseAdmin;importorg.apache.hadoop.hbase.client.HTable;importorg.apache.hadoop.hbase.client.Put;importorg.apache.hadoop.hbase.client.Result;importorg.apache.hadoop.hbase.client.ResultScanner;importorg.apache.hadoop.hbase.client.Scan;importorg.apache.hadoop.hbase.filter.CompareFilter.CompareOp;importorg.apache.hadoop.hbase.filter.Filter;importorg.apache.hadoop.hbase.filter.FilterList;importorg.apache.hadoop.hbase.filter.FilterList.Operator;importorg.apache.hadoop.hbase.filter.SingleColumnValueFilter;importorg.apache.hadoop.hbase.util.Bytes;public classHBaseUtil {/*** 初始化HBase的配置文件

*Configuration getConfiguration(){

Configuration conf=HBaseConfiguration.create();//和hbase-site.xml中配置的一致

conf.set("hbase.zooker.quorum", "h1,h2,h2");returnconf;

}/*** 实例化HBaseAdmin,HBaseAdmin用于对表的元素据进行操作

*@return*@throwsMasterNotRunningException

*@throwsZooKeeperConnectionExceptionHBaseAdmin getHBaseAdmin() throwsMasterNotRunningException, ZooKeeperConnectionException{return newHBaseAdmin(getConfiguration());

}/*** 创建表

*@paramtableName

表名

*@paramcolumnFamilies 列族

*@throwsIOExceptioncreateTable(String tableName,String...columnFamilies) throwsIOException {

HTableDescriptor htd= new HTableDescriptor(tableName.getBytes());//

for(String fc : columnFamilies) {

htd.addFamily(newHColumnDescriptor(fc));

}

getHBaseAdmin().createTable(htd);

}/*** 获取HTableDescriptor

*@paramtableName

*@return*@throwsIOExceptionHTableDescriptor getHTableDescriptor(byte[] tableName) throwsIOException{returngetHBaseAdmin().getTableDescriptor(tableName);

}/*** 获取表

*@paramtableName 表名

*@return*@throwsIOExceptionHTable getHTable(String tableName) throwsIOException{return newHTable(getConfiguration(),tableName);

}/*** 获取Put,Put是插入一行数据的封装格式

*@paramtableName

*@paramrow

*@paramcolumnFamily

*@paramqualifier

*@paramvalue

*@return*@throwsIOExceptionPut getPut(String row,String columnFamily,String qualifier,String value) throwsIOException{

Put put= newPut(row.getBytes());if(qualifier==null||"".equals(qualifier)) {

put.add(columnFamily.getBytes(),null, value.getBytes());

}else{

put.add(columnFamily.getBytes(), qualifier.getBytes(), value.getBytes());

}returnput;

}/*** 查询某一行的数据

*@paramtableName 表名

*@paramrow

行键

*@return*@throwsIOExceptionResult getResult(String tableName,String row) throwsIOException {

Get get= newGet(row.getBytes());

HTable htable=getHTable(tableName);

Result result=htable.get(get);

htable.close();returnresult;

}/*** 条件查询

*@paramtableName

表名

*@paramcolumnFamily 列族

*@paramqueryCondition 查询条件值

*@parambegin

查询的起始行

*@paramend

查询的终止行

*@return*@throwsIOExceptionResultScanner getResultScanner(String tableName,String columnFamily,String queryCondition,String begin,String end) throwsIOException{

Scan scan= newScan();//设置起始行

scan.setStartRow(Bytes.toBytes(begin));//设置终止行

scan.setStopRow(Bytes.toBytes(end));//指定要查询的列族

scan.addColumn(Bytes.toBytes(columnFamily),null);//查询列族中值等于queryCondition的记录

Filter filter1 = new SingleColumnValueFilter(Bytes.toBytes(columnFamily),null,CompareOp.EQUAL,Bytes.toBytes(queryCondition));//Filter filter2 = new SingleColumnValueFilter(Bytes.toBytes(columnFamily),null,CompareOp.EQUAL,Bytes.toBytes("chuliuxiang"));

FilterList filterList= newFilterList(Operator.MUST_PASS_ONE,Arrays.asList(filter1));

scan.setFilter(filterList);

HTable htable=getHTable(tableName);

ResultScanner rs=htable.getScanner(scan);

htable.close();returnrs;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值