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还没有深入学习,暂时先这样写啦~