Hbase过滤器2

根据限定符只返回一行数据,不存在:

public static void addQualifierFilter(FilterList list, byte[] family, byte[] qualifier) {
        byte[] fakeValue = Bytes.toBytes("DOESNOTEXIST");
        SingleColumnValueFilter filter = 
        	    new SingleColumnValueFilter(family, qualifier, CompareOp.NOT_EQUAL, fakeValue);  
        filter.setFilterIfMissing(true);
        list.addFilter(filter);
    }

 根据限定符选出不包含没有数据的:

 public static void addQualifierExcludeFilter(FilterList list, byte[] family, byte[] qualifier) {
    	SkipFilter filter = new SkipFilter(new QualifierFilter(CompareOp.NOT_EQUAL, new BinaryComparator(qualifier)));
        list.addFilter(filter);
    }

 根据时间来过滤:

public static void addTimeStampFilter(FilterList list, byte[] family, byte[] qualifier, byte[] timestamp) {
        SingleColumnValueFilter filter = 
        	    new SingleColumnValueFilter(family, qualifier, CompareOp.GREATER_OR_EQUAL, timestamp);
        list.addFilter(filter);
    }

 根据时间来过滤(不包含指定的时间):

public static void addTimeStampExcludeFilter(FilterList list, byte[] family, byte[] qualifier, byte[] timestamp) {
        SingleColumnValueExcludeFilter filter = 
        	    new SingleColumnValueExcludeFilter(family, qualifier, CompareOp.GREATER_OR_EQUAL, timestamp);
        list.addFilter(filter);
    }

 使用方法:

FilterList list = new FilterList();
		HBaseManager.addQualifierFilter(list, HTableConstant.USER_HOBBY_HOBBY_COLUMN_FAMILY, 
				HTableConstant.USER_HOBBY_USER_ID_QUALIFIER);
		HBaseManager.addTimeStampFilter(list,
				HTableConstant.USER_HOBBY_HOBBY_COLUMN_FAMILY,
				HTableConstant.USER_HOBBY_DATE_QUALIFIER, Bytes.toBytes(date));
		scan.setFilter(list);

猜你喜欢

转载自oaksun.iteye.com/blog/1927484