hbase分页查询实现-.doc
文本预览下载声明
hbase分页查询实现
Hbase本身是没有分页查询的,我在网上找了很多资料来实现一个分页功能,在这里做了一下记录,分享给大家,有什么不足之处,请尽管指出。废话不多说, 看代码。
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import mons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.HTablePool;
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.FirstKeyOnlyFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseUtils {
private static Configuration config = null;
private static HTablePool tp = null;
static {
// 加载集群配置
config = HBaseConfiguration.create();
config.set(hbase.zookeeper.quorum, xx.xx.xx);
config.set(perty.clientPort, 2181);
// 创建表池(可伟略提高查询性能,具体说明请百度或官方API)
tp = new HTablePool(config, 10);
}
/*
* 获取hbase的表
*/
public static HTableInterface getTable(String tableName) {
if (StringUtils.isEmpty(tableName))
return null;
return tp.getTable(getBytes(tableName));
}
/* 转换byte数组 */
public static byte[] getBytes(String str) {
if (str == null)
str = ;
return Bytes.toBytes(str);
}
/**
* 查询数据
* @param tableKey 表标识
* @param queryKey 查询标识
* @param startRow 开始行
* @param paramsMap 参数集合
* @return 结果集
*/
public static TBData getDataMap(String tableName, String startRow,
String stopRow, Integer currentPage, Integer pageSize)
throws IOException {
ListMapString, String mapList = null;
mapList = new LinkedListMapString, String();
ResultScanner scanner
显示全部