HBase中的过滤

HBase中的过滤,hbase,cloudera,Hbase,Cloudera,版本:HBase Cloudera CDH3U2 我使用JavaAPI在HBase中插入了一个长数据类型值 Get get = new Get(Bytes.toBytes("111")); FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL); singleColumnValueFilter = new SingleColumnValueFilter(columnFamily,column

版本:HBase Cloudera CDH3U2

我使用JavaAPI在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的结果

帮我做这个


提前感谢

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


尝试改用Bytes.tobytes 2。

您说过要存储长值吗?那你不应该把Bytes.tobytes放进去吗

Must_Pass_All运算符是一个惰性操作,即如果在filterlist中找不到筛选器的任何值,它将停止执行

尝试:


而且,您只有一个过滤器集,所以最好不要使用任何过滤器列表。仅当您希望在表上应用多个筛选器时才使用它。

我像Bytes一样插入了。ToBytes尝试过,但不起作用。我在插入和搜索中都使用long
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);