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);