HBase过滤器的使用(以防备用)

原文链接:https://blog.csdn.net/weixin_43832243/article/details/102746232

BinaryComparator bcf = new BinaryComparator("g".getBytes());//列名是g 开头的所有列
QualifierFilter qlif = new QualifierFilter(CompareFilter.CompareOp.EQUAL, bcf);

    Scan scan = new Scan();
    scan.setFilter(qlif);
    scan.addColumn("f".getBytes(), "g".getBytes());

    scan.setMaxVersions();//所有的版本

键值元数据过滤器
1、FamilyFilter:用于过滤列簇,输出在指定簇下的值。
BinaryComparator comp = new BinaryComparator("info".getBytes());//判断列簇是不是info
FamilyFilter filter = new FamilyFilter(CompareOp.EQUAL, comp);//FamilyFilter :用于过滤列族。
2、QualifierFilter :用于列名 Qualifier )过滤。输出列名为name的数据。
BinaryComparator comp = new BinaryComparator("name".getBytes());//判断列名是否name
QualifierFilter filter=new QualifierFilter(CompareOp.EQUAL, comp);//QualifierFilter :用于列名 Qualifier过滤
3、ColumnPrefixFilter :用于列名 Qualifier )前缀过滤,即包含某个前缀的所有列名。输出列名以ha开头的数据。
ColumnPrefixFilter filter =new ColumnPrefixFilter("ha".getBytes());//ColumnPrefixFilter :用于列名 Qualifier 前缀过滤,即包含某个前缀的所有列名。
行键过滤器
1、RowFilter :行键过滤器,一般来讲,执行 Scan 使用 startRow stopRow 方式比较好,而RowFilter 过滤器也可以完成对某一行的过滤。输出rowkey大于1009的行。
RowFilter filter = new RowFilter(CompareOp.GREATER, new BinaryComparator("1009".getBytes()));//rowkey大于1009的数据
2、RandomRowFilter :该过滤器是随机选择一行的过滤器。参数 chance 是一个浮点值,介于0.1 和 1.0 之间。随机输出一半的行数据。
RandomRowFilter filter = new RandomRowFilter(0.5f);
时间戳过滤器

TimestampsFilter 使用说明:该过滤器允许针对返回给客户端的时间版本进行更细粒度的控制,使用的时候,可以提供一个返回的时间戳的列表,只有与时间戳匹配的单元才可以返回。当做多行扫描或者是单行检索时,如果需要一个时间区间,可以在 Get 或 Scan 对象上使用 setTimeRange 方法来实现这一点。输出指定 两个时间戳的数据。
//时间戳过滤器
List timestamp = new ArrayList<>();
timestamp.add(1571438854697L);
timestamp.add(1571438854543L);
TimestampsFilter filter = new TimestampsFilter(timestamp);
列值过滤

ValueFilter:按照具体的值来筛选单元格的过滤器,这会把一行中值不能满足的单元格过滤掉。输出值为100的数据
ValueFilter filter = new ValueFilter(CompareOp.EQUAL, new BinaryPrefixComparator("100".getBytes()));
结构过滤器 FilterList

FilterList 代表一个过滤器链,它可以包含一组即将应用于目标数据集的过滤器,过滤器间有“与”“FilterList.Operator.MUST_PASS_ALL 和“或”FilterList.Operator.MUST_PASS_ONE 关系 。输出“Grade”表中,“course”簇里“hadoop”和“math”都为100的数据。
BinaryComparator comp = new BinaryComparator("100".getBytes());//包含S
SingleColumnValueFilter filter1 = new SingleColumnValueFilter("course".getBytes(), "hadoop".getBytes(), CompareOp.EQUAL, comp);
comp = new BinaryComparator("100".getBytes());//包含S
SingleColumnValueFilter filter2 = new SingleColumnValueFilter("course".getBytes(), "math".getBytes(), CompareOp.EQUAL, comp);

	List<Filter> filters = new ArrayList <Filter>();
	filters.add(filter1);
	filters.add(filter2);
	FilterList filter = new FilterList (FilterList.Operator.MUST_PASS_ALL,filters);
posted @ 2021-07-27 14:34  堕落先锋  阅读(284)  评论(0编辑  收藏  举报