Hbase过滤器

1.SingleColumnValueFilter

各个条件之间是且的关系:

public static void setAndFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
        for (String v : array) { // 各个条件之间是“且”的关系
           String[] s = v.split(",");
		   filterList.addFilter(new SingleColumnValueFilter(Bytes
	               .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.EQUAL, 
	               Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

 各个条件之间是或的关系:

 public static void setOrFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList(
                FilterList.Operator.MUST_PASS_ONE);
        for (String v : array) { // 各个条件之间是“或”的关系
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.EQUAL,
                    Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

 各个条件之间是且的关系,值大于:

public static void setGreatFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]),
                    CompareOp.GREATER, Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

  各个条件之间是且的关系,值大于等于:

public static void setGreatOrEqualFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]),
                    CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

   各个条件之间是且的关系,值包含在内:

public static void setIncludeFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
        for (String v : array) { // 各个条件之间是“且”的关系
           String[] s = v.split(",");
 		   filterList.addFilter(new SingleColumnValueFilter(Bytes
 	               .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.EQUAL, 
 	               new SubstringComparator(s[2])));
        }
        scan.setFilter(filterList);
    }

   各个条件之间是且的关系,值不等于:

public static void setOutFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.NOT_EQUAL,
                    Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

   各个条件之间是或的关系,值不等于:

public static void setOutFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.NOT_EQUAL,
                    Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

使用方法:

List<String> array = new ArrayList<String>();
array.add("action,event,情景");
array.add("action,label,点击item");
HBaseManager.setAndFilter(scan, array);
		
		
	

 

猜你喜欢

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