Java 具有多个过滤条件的HBase扫描api

Java 具有多个过滤条件的HBase扫描api,java,hbase,Java,Hbase,我对HBase api非常陌生,在执行以下操作时看到一些奇怪的结果 我们正在尝试基于多个过滤器进行扫描。我想通过所有的过滤条件。我正在使用下面的代码 FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL); Filter pageFilter = new PageFilter(5000); filterList.addFilter(pageFilter); SingleColumnValueFilter

我对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

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

您指定了一个过滤器列表,所有过滤器都必须通过该列表(如“AND”行为)。在筛选器列表中,有2个
SingleColumnValueFilter
,它们相互矛盾:它们表示列
column\u族:column\u NAME
必须同时等于value1和value2。我想这就是为什么你在第一次和第三次评论中没有得到结果的原因

关于您的第二条评论,我认为您必须记住,
SingleColumnValueFilter
仅在扫描中存在该列时应用。这可能是你所看到的解释。检查
setFilterIfMissing(布尔值)
方法:


希望它有帮助

您指定了一个过滤器列表,其中所有过滤器都必须通过(如“AND”行为)。在筛选器列表中,有2个
SingleColumnValueFilter
,它们相互矛盾:它们表示列
column\u族:column\u NAME
必须同时等于value1和value2。我想这就是为什么你在第一次和第三次评论中没有得到结果的原因

关于您的第二条评论,我认为您必须记住,
SingleColumnValueFilter
仅在扫描中存在该列时应用。这可能是你所看到的解释。检查
setFilterIfMissing(布尔值)
方法:


希望能有所帮助

我已经编辑了我的打字错误。它们是同一柱族下的两个不同柱。关于你的第二点,即使我在扫描中添加了两列,我也没有得到想要的结果。我已经修改了代码。仍然没有产生想要的结果。我已经编辑了我的打字错误。它们是同一柱族下的两个不同柱。关于你的第二点,即使我在扫描中添加了两列,我也没有得到想要的结果。我修改了代码。仍然没有生成想要的结果。为什么要添加两次过滤器?我们看不到在哪里创建了扫描变量。为什么要添加两次过滤器?我们看不到在哪里创建了扫描变量