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

标签 java hadoop hbase bigdata

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

关于java - 使用 Java 在 Hbase 中使用过滤器获取固定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49360830/

相关文章:

java - 强行检查 : don't proceed if there is already a string in column number 0

Java 控制台在发生日志记录时推送输入文本

java - 在 Java 中给定字符串生成伪唯一长值

java - 通用双向链表实现

java - 为什么我的 Reducer 没有读取文件?

database - HBase如何以磁盘传输速率而不是磁盘寻道速率执行更新?

hadoop - Hue Filebrowser Search仅在第一层进行搜索

java - HBase PerformanceEvaluation,如何分配columnFamily和列名?

javascript - 如何在 nodeJS 中将返回字节数组的 Bigtable HBase API 转换为整数或 float ?

EC2 上的 Hadoop 与 ElasticMapReduce/S3