Hbase的api中可以通过filter来实现like查询
public static void likeQueryByRowkey() throws Exception{
Scan scan = new Scan();
RegexStringComparator comp = new RegexStringComparator("(2014-09)");
RowFilter filter = new RowFilter(CompareOp.EQUAL, comp);
scan.setFilter(filter);
scan.setCaching(200);
scan.setCacheBlocks(false);
HTable hTable = new HTable(configuration, "access_page_ip_basis_hour");
ResultScanner scanner = hTable.getScanner(scan);
byte[] fbytes = Bytes.toBytes("columnFamily1");
byte[] cbytes = Bytes.toBytes("h_time");
for (Result r : scanner) {
AccessPageIpBasisHour o = new AccessPageIpBasisHour();
for (KeyValue kv : r.raw()) {
if("pageNum".equals(new String(kv.getQualifier()))){
o.setPageNum(Integer.parseInt(new String(kv.getValue())));
String hTime = new String(kv.getRow());
o.sethTime(hTime);
}else if("ipNum".equals(new String(kv.getQualifier()))){
o.setIpNum(Integer.parseInt(new String(kv.getValue())));
}else if("accessNum".equals(new String(kv.getQualifier()))){
o.setAccessNum(Integer.parseInt(new String(kv.getValue())));
}
}
System.out.println(o.getAccessNum());
}
}
public static void likeQueryByColumn() throws Exception{
Scan scan = new Scan();
RegexStringComparator comp = new RegexStringComparator("(##2014-09)");
byte[] bytes = Bytes.toBytes("h_time");
Filter filter = new SingleColumnValueFilter(bytes, bytes, CompareOp.EQUAL, comp);
scan.setFilter(filter);
scan.setCaching(200);
scan.setCacheBlocks(false);
HTable hTable = new HTable(configuration, "access_page_ip_basis_hour");
ResultScanner scanner = hTable.getScanner(scan);
for (Result r : scanner) {
AccessPageIpBasisHour o = new AccessPageIpBasisHour();
for (KeyValue kv : r.raw()) {
if("pageNum".equals(new String(kv.getQualifier()))){
o.setPageNum(Integer.parseInt(new String(kv.getValue())));
String hTime = new String(kv.getRow());
o.sethTime(hTime);
}else if("ipNum".equals(new String(kv.getQualifier()))){
o.setIpNum(Integer.parseInt(new String(kv.getValue())));
}else if("accessNum".equals(new String(kv.getQualifier()))){
o.setAccessNum(Integer.parseInt(new String(kv.getValue())));
}
}
System.out.println(o.gethTime());
}
}