版本:HBase Cloudera CDH3U2。
我已使用Java API将长数据类型值插入HBase。
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);
这里我得到keyValueList.size()为零,如果我没有应用任何过滤器,我得到keyValueList.size()是3,值是(1,5,7)。
我想要5和7的结果。
帮我这样做。
提前致谢
答案 0 :(得分:0)
你如何存储价值观?你使用Bytes.toBytes(“2”)或Bytes.toBytes(2)存储它们吗?你必须在这里使用相同的东西。默认比较器为BinaryComparator,它按字典顺序比较字节转换值,但字符串和整数的转换方法不同。因此,无论是在插入时使用整数还是在比较时使用整数,或者在两种情况下都使用字符串。
请尝试使用Bytes.toBytes(“2”)。
答案 1 :(得分:0)
你说你试图存储Long值?那你不应该放Bytes.toBytes(2L)
吗?
答案 2 :(得分:0)
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
Must_Pass_All运算符是一个惰性运算,即如果它没有为filterlist中的过滤器找到任何值,它将停止执行。
尝试:
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
此外,您只有一个过滤器集,因此不使用任何过滤器列表。仅当您希望在表格上应用多个过滤器时才使用它。