在我的应用程序中,我需要从hbase获取数据,并且需要对该数据应用筛选器,并且需要限制要获取的记录数。下面是我编写的代码:
ResultScanner scanner = null;
HTable table = null;
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", hbaseServer);
config.set("hbase.zookeeper.property.clientPort", hbasePort);
FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
table = new HTable(config, "TableName");
SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("ColumnName"),
Bytes.toBytes("ColumnName"), CompareFilter.CompareOp.EQUAL,
new BinaryComparator(Bytes.toBytes(String.valueOf("FilterValue"))));
SingleColumnValueFilter filter1 = new SingleColumnValueFilter(Bytes.toBytes("ColumnName2"),
Bytes.toBytes("ColumnName2"), CompareFilter.CompareOp.EQUAL,
new BinaryComparator(Bytes.toBytes(String.valueOf("FilterValue2"))));
list.addFilter(filter);
list.addFilter(filter1);
Scan scan = new Scan();
scan.setFilter(list);
scan.setFilter(new PageFilter(10));
scanner = table.getScanner(scan);
过滤器工作得非常好,但我得到了完整的数据集。scan.setfilter(new pagefilter(10))不工作。我只需要拉前10名记录是匹配的过滤器提供。我也尝试过:
scan.setMaxResultSize(10);
scan.setMaxResultsPerColumnFamily(10);
但这些都不起作用。上面的代码可能有什么问题?
1条答案
按热度按时间m0rkklqb1#
如果复制的代码正确,则重写第一个过滤器:
似乎你想做