美文网首页
五、HBase根据rowKey查询

五、HBase根据rowKey查询

作者: 紫雨杰 | 来源:发表于2018-12-13 15:44 被阅读0次
1、RowFilter用于过滤row key
    Operator                  Description
      LESS                      小于
  LESS_OR_EQUAL                 小于等于
      EQUAL                     等于
      NOT_EQUAL                 不等于
    GREATER_OR_EQUAL            大于等于
      GREATER                    大于
      NO_OP                     排除所有

    Comparator                      Description
BinaryComparator                使用Bytes.compareTo()比较
BinaryPrefixComparator          和BinaryComparator差不多,从前面开始比较

NullComparator     Does not compare against an actual value but whether a given one is null, 
                   or not  null.

BitComparator           Performs a bitwise comparison, providing a BitwiseOp class with OR, 
                        and XOR operators.
RegexStringComparator            正则表达式
SubstringComparator              把数据当成字符串,用contains()来判断
public static List<Property> queryTable(String tableName, String rowKeyReg) {
        TableName name = TableName.valueOf(tableName);
        try (Table table = CONNECTION.getTable(name)) {
            Scan scan = new Scan();

            System.out.println("小于等于rowKeyReg的行(rowKeyReg可以为指定的值)");
                Filter filter = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
                                new BinaryComparator(rowKeyReg.getBytes()));
                scan.setFilter(filter);
                ResultScanner scanner = table.getScanner(scan);
                for (Result rs : scanner) {
                        System.out.println(rs);
                }
                scanner.close();

            System.out.println("正则获取结尾为a的行");
                Filter filter1 = new RowFilter(CompareFilter.CompareOp.EQUAL,
                                new RegexStringComparator(".*a));
                scan.setFilter(filter1);
                ResultScanner scanner1 = table.getScanner(scan);
                for (Result rs : scanner1) {
                        System.out.println(rs);
                }
                scanner1.close();

            System.out.println("包含有b的行");
                Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
                                new SubstringComparator("b"));
                scan.setFilter(filter2);
                ResultScanner scanner2 = table.getScanner(scan);
                for (Result rs : scanner2) {
                        System.out.println(res);
                }
                scanner2.close();

           System.out.println("开头是rowKeyReg 的");
                Filter filter3 = new RowFilter(CompareFilter.CompareOp.EQUAL,
                                new BinaryPrefixComparator(rowKeyReg.getBytes()));
                scan.setFilter(filter3);
                ResultScanner scanner3 = table.getScanner(scan);
                for (Result rs : scanner3) {
                        System.out.println(rs);
                }
                scanner3.close();


            Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,
                    new BinaryPrefixComparator(("\"" + rowKeyReg + "\"").getBytes()));
            scan.setFilter(filter);
            ResultScanner scanner4 = table.getScanner(scan);
            for (Result res : scanner4) {
                Cell[] cells = res.rawCells();
                System.out.println(res);
            }
        } catch (Exception e) {
            log.error("query HBase error", e);
        }
        return null;
    }

相关文章

网友评论

      本文标题:五、HBase根据rowKey查询

      本文链接:https://www.haomeiwen.com/subject/abyuxqtx.html