1

Version: HBase Cloudera CDH3U2.

I Have inserted a long datatype value into HBase using Java API.

    Get get = new Get(Bytes.toBytes("111"));

    FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);

 singleColumnValueFilter = new SingleColumnValueFilter(columnFamily,columnName , CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(2));

    filterList.addFilter(singleColumnValueFilter);

    get.setFilter(filterList);
    get.setMaxVersions(10);

    Result result = hTable.get(get);

    List keyValueList = result.getColumn(columnFamily, columnName);

Here I m getting the keyValueList.size() is zero, and if I m not applying any filters, I m getting keyValueList.size() is 3, and the values are (1,5,7).

I want the result of 5 and 7.

Help me to do this.

Thanks in advance

4

3 回答 3

0

你说你试图存储 Long 值?那你不应该放Bytes.toBytes(2L)吗?

于 2012-04-03T19:54:05.387 回答
0

你如何存储价值?您是使用 Bytes.toBytes("2") 还是 Bytes.toBytes(2) 存储它们?你必须在这里使用相同的东西。默认比较器是BinaryComparator,它按字典顺序比较字节转换后的值,但字符串和整数的转换方法不同。因此,要么在插入和比较时使用整数,要么在两种情况下都使用字符串。

尝试改用 Bytes.toBytes("2") 。

于 2011-12-29T10:58:12.773 回答
0
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);

Must_Pass_All Operator 是一个惰性操作,即如果它在 filterlist 中没有找到过滤器的任何值,它将停止执行。

尝试:

FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);

此外,您只有一个过滤器集,因此最好不要使用任何过滤器列表。仅当您希望在表格上应用多个过滤器时才使用它。

于 2016-02-26T23:31:08.863 回答