HBase过滤器工具类
package com.liuyu.utils;
import org.apache.hadoop.hbase.CompareOperator;
import org.apache.hadoop.hbase.filter.*;
import java.util.Collection;
public class HBaseFilterUtil {
public static Filter eqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
}
public static Filter gtFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.GREATER, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
}
public static Filter gteqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.GREATER_OR_EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
}
public static Filter ltFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.LESS, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
}
public static Filter lteqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.LESS_OR_EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
}
public static Filter neqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.NOT_EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
}
public static Filter andFilter(Filter... filters) {
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
if (filters != null && filters.length > 0) {
if (filters.length > 1) {
for (Filter f : filters) {
filterList.addFilter(f);
}
}
if (filters.length == 1) {
return filters[0];
}
}
return filterList;
}
public static Filter andFilter(Collection<Filter> filters) {
return andFilter(filters.toArray(new Filter[0]));
}
public static Filter orFilter(Filter... filters) {
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
if (filters != null && filters.length > 0) {
for (Filter f : filters) {
filterList.addFilter(f);
}
}
return filterList;
}
public static Filter orFilter(Collection<Filter> filters) {
return orFilter(filters.toArray(new Filter[0]));
}
public static Filter notNullFilter(String cf, String col) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.NOT_EQUAL, new NullComparator());
filter.setFilterIfMissing(true);
filter.setLatestVersionOnly(true);
return filter;
}
public static Filter nullFilter(String cf, String col) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.EQUAL, new NullComparator());
filter.setFilterIfMissing(false);
filter.setLatestVersionOnly(true);
return filter;
}
public static Filter subStringFilter(String cf, String col, String sub) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.EQUAL, new SubstringComparator(sub));
filter.setFilterIfMissing(true);
filter.setLatestVersionOnly(true);
return filter;
}
public static Filter regexFilter(String cf, String col, String regex) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareOperator.EQUAL, new RegexStringComparator(regex));
filter.setFilterIfMissing(true);
filter.setLatestVersionOnly(true);
return filter;
}
}