java hbase查询_java实现Hbase多条件组合查询 (Filter方式)

该博客展示了如何在Java中使用HTableInterface和FilterList进行HBase的多条件组合查询。通过SubstringComparator和SingleColumnValueFilter进行比较操作,并应用PageFilter限制返回结果的数量。查询结果遍历并打印了每个KeyValue的详细信息。
摘要由CSDN通过智能技术生成

/**

* 通过多条件联合查询

*

* @param tablename

* @param arr

* @return

* @throws IOException

*/

public List queryByFilter(String tablename, List arr)

throws IOException {

HTablePool hTablePool = HBaseUtil.getHTablePool();

HTableInterface hti = hTablePool.getTable(tablename);

FilterList filterList = new FilterList();

Scan s1 = new Scan();

for (String v : arr) {

String[] s = v.split(",");

SubstringComparator comp = new SubstringComparator(s[2]);

filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes(s[0]),

Bytes.toBytes(s[1]), CompareOp.EQUAL, comp));

/*

* filterList.addFilter(new SingleColumnValueFilter(Bytes

* .toBytes("familyName"), Bytes.toBytes("colName"), CompareOp.EQUAL,

* Bytes.toBytes("8010")));

*/

}

PageFilter pageFilter = new PageFilter(this.querySize);

filterList.addFilter(pageFilter);

s1.setFilter(filterList);

ResultScanner ResultScannerFilterList = hti.getScanner(s1);

SimpleDateFormat fmt = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:SSS");

System.out.println("hbase 查询结束:" + fmt.format(new Date()));

List queryList = new ArrayList();

for (Result rr = ResultScannerFilterList.next(); rr != null; rr = ResultScannerFilterList

.next()) {

for (KeyValue kv : rr.list()) {

System.out.println("row : " + new String(kv.getRow()));

System.out.println("column : "

+ new String(kv.getKey(), "UTF-8"));

System.out.println("属性名: "

+ new String(kv.getQualifier(), "UTF-8"));

System.out.println("value : "

+ new String(kv.getValue(), "UTF-8"));

System.out.println("Family :" + new String(kv.getFamily())

+ ":");

System.out.println("Timestamp :"

+ String.valueOf(kv.getTimestamp()) + "");

}

}

queryList.add(getBean(rr, null));

}

return queryList;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值