Java SingleColumnValueFilter对结果没有影响

Java SingleColumnValueFilter对结果没有影响,java,hbase,Java,Hbase,hy 这个问题很类似于 我使用四个SingleColumnValueFilter的w/operator EQUAL,并将它们添加到带有operator MUST_PASS_ONE的FilterList中。结果数与不设置过滤器列表的结果数相同。要比较的值是一个字节[],它应该是正确的,因为我只存储了以前结果中的值。(这是一个IP地址,我在检索数据时将其转换为InetAddress、new InetAddress(值为byte[]),对于所描述的查询,我只调用InetAddress.getAddre

hy

这个问题很类似于

我使用四个SingleColumnValueFilter的w/operator EQUAL,并将它们添加到带有operator MUST_PASS_ONE的FilterList中。结果数与不设置过滤器列表的结果数相同。要比较的值是一个字节[],它应该是正确的,因为我只存储了以前结果中的值。(这是一个IP地址,我在检索数据时将其转换为InetAddress、new InetAddress(值为byte[]),对于所描述的查询,我只调用InetAddress.getAddress,它返回一个byte[])

你知道可能是什么问题吗?我是不是用错了过滤器

编辑:


我还将查询检索到的原始值用作SingleColumnValueFilter的值,结果没有差异,因此字节[]内容不会有问题。

我想我可以自己给出答案,很抱歉之前没有调试和检查所有hbase代码

我只是检查了比较算法的实现(按字典顺序),因此我意识到长度没有被考虑在内,尽管我认为它将被填充为w/zero;不幸的是,事实并非如此


唯一合理的选择是创建一个定制的比较器(例如参见)

很抱歉,这对我来说没有任何意义(我想我对hbase的了解还不够)。词典比较如何影响EQUALS?我可以看到它影响更小、更大(特别是当你比较数字的字符串版本时),但它应该不会影响等于…你能解释一下吗?我有两个不同长度的字节[]。我调试了代码,发现比较算法在到达较短字节的长度时返回,而忽略了较长字节[]的其余部分,就好像它不在那里一样。并且返回的值不是预期的值(应该是“false”),我希望我记得正确。(如果我没有弄错的话,当时使用的版本是0.92.1)我可以再次检查,可能在几天内回来……也可能是因为涉及到不吉利的测试数据!非常感谢@divadpoc,这在一定程度上澄清了这一点。我的症状与你的问题相同……但不确定问题是否相关。