HBASE通过Rowkey可以直接定位行,速度很快,在filter中,有2个API可以过滤主键:
1. RowFilter 行过滤器, 依靠行键来过滤
Scan scan = new Scan();
Filter rowfilter = new RowFilter(CompareOp.EQUAL, new BinaryPrefixComparator(Bytes.toBytes("A131420033-1007-9223370539574828268")));
scan1.setFilter(rowfilter);
2. setRowPrefixFilter
Scan scan = new Scan();
scan.setRowPrefixFilter(Bytes.toBytes("A131420033-1007-9223370539574828268"));
这2者的区别差别太大,上面的rowfilter一定是走全表扫描,即使他的解释是通过行键来过滤, 而直接通过scan. setRowPrefixFilter 才是真正的走行键过滤。
HBASE的数据动辄几亿几十亿,全表扫描是觉得不可以忍受的, HBASE如果rowkey设计不合理, 根本就不可用,除非依赖二级索引。
1. RowFilter 行过滤器, 依靠行键来过滤
Scan scan = new Scan();
Filter rowfilter = new RowFilter(CompareOp.EQUAL, new BinaryPrefixComparator(Bytes.toBytes("A131420033-1007-9223370539574828268")));
scan1.setFilter(rowfilter);
2. setRowPrefixFilter
Scan scan = new Scan();
scan.setRowPrefixFilter(Bytes.toBytes("A131420033-1007-9223370539574828268"));
这2者的区别差别太大,上面的rowfilter一定是走全表扫描,即使他的解释是通过行键来过滤, 而直接通过scan. setRowPrefixFilter 才是真正的走行键过滤。
HBASE的数据动辄几亿几十亿,全表扫描是觉得不可以忍受的, HBASE如果rowkey设计不合理, 根本就不可用,除非依赖二级索引。