java - 具有多种过滤条件的HBase Scan api

标签 java hbase

我对 HBase api 非常陌生,在执行以下操作时看到一些奇怪的结果。

我们正在尝试基于多个过滤器进行扫描。我想通过所有的过滤条件。我正在使用下面的代码。

FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
Filter pageFilter = new PageFilter(5000);
filterList.addFilter(pageFilter);
SingleColumnValueFilter filterOne = new SingleColumnValueFilter(Bytes.toBytes(COLUMN_FAMILY),
                Bytes.toBytes(COLUMN_NAME1), CompareOp.EQUAL, Bytes.toBytes(value1));
filterList.addFilter(filterOne);
SingleColumnValueFilter filterTwo = new SingleColumnValueFilter(Bytes.toBytes(COLUMN_FAMILY),
                Bytes.toBytes(COLUMN_NAME2), CompareOp.EQUAL, Bytes.toBytes(value2));
filterList.addFilter(filterOne);
filterList.addFilter(filterTwo);

//Scan
Scan scan = new Scan();
scan.setFilter(filterList);
Result result;
try {
            scanner = hTable.getScanner(scan);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
while ((result = scanner.next()) != null) {
  //print the result.
}
//If I am adding multiple SingleColumnValueFilter and I am not doing a addCoulmn() to the scan I am not getting any result even though there are records.

//If I am adding a column to scan then I am seeing results. Initially the result set is matching my filter condition but if I am running for bigger hbase data set then I am seeing bad results.

//If I am adding multiple addCoulmn() to my scan then I am not seeing any result

我尝试寻找合适的示例,但它们似乎都不起作用。非常感谢这方面的任何帮助。提前致谢。

最佳答案

您指定了一个 FilterList,所有过滤器都必须通过其中(类似于“AND”行为)。在过滤器列表中,有 2 个相互矛盾的 SingleColumnValueFilter:它们表示列 COLUMN_FAMILY:COLUMN_NAME 必须同时等于 value1 和 value2。我认为这就是为什么您在第一条和第三条评论的上下文中没有得到结果的原因。

关于您的第二条评论,我认为您必须记住,仅当扫描中存在该列时才应用 SingleColumnValueFilter。这可能是你所看到的的解释。检查 setFilterIfMissing(boolean) 方法:https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html#setFilterIfMissing-boolean-

希望对你有帮助

关于java - 具有多种过滤条件的HBase Scan api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41560433/

相关文章:

Java - SwingWorker - process() 方法中的问题

java - 在 hbase 中有效地发送许多 get 请求

hadoop - 可以在近RDBMS方案中使用哪些hadoop框架

java - javac 或 Hotspot 是否自动添加 'final' 作为不变变量的优化?

java - Eclipse/条件断点导致 BreakpointException

java - 在 JUnit 4.11 中结合 @ClassRule 和 @Rule

json - HBase从具有行ID的任意JSON插入

java - org.hibernate.PersistentObjectException : detached entity passed to persist: com. horariolivre.entity.Key

javascript - 我如何使用 Hbase 中的数据通过 d3.js 进行可视化

hadoop - 我在尝试在 5 节点 hadoop 集群中安装 Hbase 时遇到一些问题,