繁体   English   中英

使用Java在Hbase中使用过滤器获取固定行

[英]Fetch fixed rows with filters in Hbase using Java

在我的应用程序中,我需要从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);

但是这些都不起作用。 上面的代码可能是什么问题?

如果正确复制了代码,则重写第一个过滤器:

Scan scan = new Scan();
scan.setFilter(list);
scan.setFilter(new PageFilter(10));  <-- changes FilterList to PageFilter

似乎您想做

list.addFilter(new PageFilter(10));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM