3.1. 基于列族过滤数据的FamilyFilter
构造函数:
FamilyFilter(CompareFilter.CompareOp familyCompareOp, ByteArrayComparable familyComparator)
 
个人实测代码:
        HTable table = HBaseDAO.getHTable("147patents");
 
        /**
         * FamilyFilter构造函数中第二个参数是ByteArrayComparable类型
         * ByteArrayComparable类参见“引言-参数基础”章节
         * 下面仅以最可能用到的BinaryComparator、BinaryPrefixComparator举例:
         */
        FamilyFilter ff = new FamilyFilter(
                CompareFilter.CompareOp.EQUAL , 
                new BinaryComparator(Bytes.toBytes("pat"))   //表中不存在pat列族,过滤结果为空
                );
        FamilyFilter ff1 = new FamilyFilter(
                CompareFilter.CompareOp.EQUAL , 
                new BinaryPrefixComparator(Bytes.toBytes("pat"))   //表中存在以pat打头的列族patentinfo,过滤结果为该列族所有行
                );
        Scan scan = new Scan();
        scan.setFilter(ff1);
        ResultScanner rs = table.getScanner(scan); 
 
注意:
  1. 如果希望查找的是一个已知的列族,则使用 scan.addFamily(family)  比使用过滤器效率更高;
  2. 由于目前HBase对多列族支持不完善,所以该过滤器目前用途不大。