Hbase条件筛选

需求来自于,模糊查找当天的所有记录,并查找对应列的记录数

public static void main(String[] args) throws Exception{
//创建HBase连接 Configuration conf
= HBaseConfiguration.create();
//设定需要查询的表 HTable table
= new HTable(conf,"EVENT_LOG_LBS_HIS"); Scan scan = new Scan();
//设定模糊时间戳 String startStr
= "-20160530";
//使用Hbase内置过滤器 scan.setFilter(findCount(startStr)); ResultScanner rowscan
= table.getScanner(scan); int i = 1;
//遍历结果
for(Result rs : rowscan){ System.out.println("第" + i + "条: rowkey= " + Bytes.toString(rs.getRow())); i++;
//根据结果行中某一列的值,进行条件筛选 String aaa
= Bytes.toString(rs.getValue("f1".getBytes(),"LS_channel_type".getBytes())); if(aaa.equals("2"){ System.out.println(Bytes.toString(rs.getRow())); } } public static FilterList findCount(String startstr){ Filter filter = new RowFilter(CompareFilter.CompareOp.GREATER_OR_EQUAL,new RegexStringComparator(startstr)); return filter; }

 其实可以都写成内置过滤器,不过HBase还没有深入学习,暂时先这样写啦~

posted on 2016-05-30 17:55  松伯  阅读(1362)  评论(0编辑  收藏  举报