HBase Filter
使用过滤器:
//集合用于存储过滤条件
List<String> array = new ArrayList<String>();
//加入过滤条件
array.add("action,event,TreasureDetail");
array.add("action,label,Enter");
//调用相应过滤方法
HBaseManager.setAndFilter(scan, array);
定义过滤方法:
public static void setAndFilter(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.EQUAL,
Bytes.toBytes(s[2])
)
);
}
scan.setFilter(filterList);
}
参数详解:
org.apache.hadoop.hbase.filter.CompareFilter.CompareOp
CompareOp.GREATER//大于
CompareOp.GREATER_OR_EQUAL//大于或者登录
CompareOp.EQUAL//等于
CompareOp.NOT_EQUAL//不等与
CompareOp.NO_OP //无操作
CompareOp.LESS //小于
CompareOp.LESS_OR_EQUAL //小于或者等于
FilterList filterList = new FilterList(); //各个条件之间是且的关系(默认)
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE); //各个条件之间是或的关系
//方法传入的List集合参数中包含了一个个的条件
FilterList.Operator.MUST_PASS_ONE//OR
FilterList.Operator.MUST_PASS_ALL //AND
org.apache.hadoop.hbase.filter.FilterList
org.apache.hadoop.hbase.filter.SingleColumnValueFilter
SingleColumnValueFilter(byte[] family, byte[] qualifier, CompareOp compareOp, byte[] value)
*/
/**
使用过滤器:
FilterList list = new FilterList();
HBaseManager.addTimeStampExcludeFilter(list,
HTableConstant.Bytes.toBytes("imei"),
HTableConstant.Bytes.toBytes("date"),
Bytes.toBytes(date)
);
scan.setFilter(list);
定义过滤器方法:
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);
}
参数详解:
list, //FilterList对象
HTableConstant.Bytes.toBytes("imei"),//列族
HTableConstant.Bytes.toBytes("date"), //列
Bytes.toBytes(date)//value
org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter
//简单的列值排除
SingleColumnValueExcludeFilter(byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, byte[] value)
family:列族
qualifier:列
compareOp:过滤条件
value:值
org.apache.hadoop.hbase.filter.SingleColumnValueFilter
//简单的列值包含
SingleColumnValueFilter(byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, byte[] value)
family:列族
qualifier:列
compareOp:过滤条件
value:值
org.apache.hadoop.hbase.filter.SkipFilter.SkipFilter(Filter filter)
//跳过
ase.filter.QualifierFilter
//限定词过滤
QualifierFilter(CompareOp op, WritableByteArrayComparable qualifierComparator)
op:过滤条件
qualifierComparator: