Hbase实现Like查询

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());
	        }  
	    }  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值