如果说只是单纯的hbase,可以办到,但是性能是个问题。所以我们需要结合其它技术,比如hbase二级索引或则solr.
有的使用正则表达式,取后缀,但是这个没有尝试过,感觉也不是什么好的解决方案。
这里单纯从hbase的角度来解决:
使用SingleColumnValueFilter来解决:
思路:查询id=0111,然后添加上时间范围
使用了FilterList ,filter ,SingleColumnValueFilter
FilterList filterList=new FilterList();
Filter filter = new SingleColumnValueFilter(
Bytes.toBytes("列簇"),
Bytes.toBytes("id"),
CompareOp.EQUAL, Bytes.toBytes("0111"));
SingleColumnValueFilter filter1 = new SingleColumnValueFilter(
Bytes. toBytes ( "列簇" ),
Bytes. toBytes ( "time" ),
CompareOp. GREATER_OR_EQUAL ,
Bytes. toBytes ( "2014年5月1号" )
);
SingleColumnValueFilter filter2 = new SingleColumnValueFilter(
Bytes. toBytes ( "列簇" ),
Bytes. toBytes ( "time" ),
CompareOp. LESS_OR_EQUAL ,
Bytes. toBytes ( "2014年6月1号" )
);
添加条件
filterList.addFilter(filter1);
filterList.addFilter(filter2);
filterList.addFilter(filter);
scan.setFilter(filterList);
|