hbase常用的数据库api操作posted on 需要引入hadoop和hbase的jar包,我这里hbase用的是hbase-0.90.5版本,所以我这里引入的hbase的jar包是hbase-0.90.5.jar和zookeeper-3.3.2.jar。 一些常用的api操作: package cn.luxh.app.util; import java.io.ioexcepti
hbase常用的数据库api操作posted on
需要引入hadoop和hbase的jar包,我这里hbase用的是hbase-0.90.5版本,美国空间,所以我这里引入的hbase的jar包是hbase-0.90.5.jar和zookeeper-3.3.2.jar。
一些常用的api操作:
package cn.luxh.app.util;import java.io.ioexception;import java.util.arrays;import org.apache.hadoop.conf.configuration;import org.apache.hadoop.hbase.hbaseconfiguration;import org.apache.hadoop.hbase.hcolumndescriptor;import org.apache.hadoop.hbase.htabledescriptor;import org.apache.hadoop.hbase.masternotrunningexception;import org.apache.hadoop.hbase.zookeeperconnectionexception;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.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.filter;import org.apache.hadoop.hbase.filter.filterlist;import org.apache.hadoop.hbase.filter.filterlist.operator;import org.apache.hadoop.hbase.filter.singlecolumnvaluefilter;import org.apache.hadoop.hbase.util.bytes;public class hbaseutil {/*** 初始化hbase的配置文件* configuration getconfiguration(){configuration conf = hbaseconfiguration.create();//和hbase-site.xml中配置的一致conf.set(hbase.zooker.quorum, h1,h2,h2);return conf;}/*** 实例化hbaseadmin,hbaseadmin用于对表的元素据进行操作* @return* @throws masternotrunningexception* @throws zookeeperconnectionexceptionhbaseadmin gethbaseadmin() throws masternotrunningexception, zookeeperconnectionexception{return new hbaseadmin(getconfiguration());}/*** 创建表* @param tablename表名* @param columnfamilies 列族* @throws ioexceptioncreatetable(string tablename,string...columnfamilies) throws ioexception {htabledescriptor htd = new htabledescriptor(tablename.getbytes());//for(string fc : columnfamilies) {htd.addfamily(new hcolumndescriptor(fc));}gethbaseadmin().createtable(htd);}/*** 获取htabledescriptor* @param tablename* @return* @throws ioexceptionhtabledescriptor gethtabledescriptor(byte[] tablename) throws ioexception{return gethbaseadmin().gettabledescriptor(tablename);}/*** 获取表* @param tablename 表名* @return* @throws ioexceptionhtable gethtable(string tablename) throws ioexception{return new htable(getconfiguration(),tablename);}/*** 获取put,put是插入一行数据的封装格式* @param tablename* @param row* @param columnfamily* @param qualifier* @param value* @return* @throws ioexceptionput getput(string row,string columnfamily,string qualifier,string value) throws ioexception{put put = new put(row.getbytes());if(qualifier==null||.equals(qualifier)) {put.add(columnfamily.getbytes(), null, value.getbytes());}else {put.add(columnfamily.getbytes(), qualifier.getbytes(), value.getbytes());}return put;}/*** 查询某一行的数据* @param tablename 表名* @param row行键* @return* @throws ioexceptionresult getresult(string tablename,string row) throws ioexception {get get = new get(row.getbytes());htable htable = gethtable(tablename);result result = htable.get(get);htable.close();return result;}/*** 条件查询* @param tablename表名* @param columnfamily 列族* @param querycondition 查询条件值* @param begin查询的起始行* @param end查询的终止行* @return* @throws ioexceptionresultscanner getresultscanner(string tablename,string columnfamily,string querycondition,string begin,string end) throws ioexception{scan scan = new scan();//设置起始行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 = new filterlist(operator.must_pass_one,arrays.aslist(filter1));scan.setfilter(filterlist);htable htable = gethtable(tablename);resultscanner rs = htable.getscanner(scan);htable.close();return rs;}}
测试:
