嘿,
这个问题与 SingleColumnValueFilter not returning proper number of rows 非常相似.
我使用四个带有运算符 EQUAL 的 SingleColumnValueFilter,并将它们添加到带有运算符 MUST_PASS_ONE 的 FilterList 中。结果数与未设置 FilterList 的结果数相同。要比较的值是一个 byte[] ,它应该是正确的,因为我只是存储以前结果中的值。 (这是一个 IP 地址,我在检索数据时将其转换为 InetAddress、new InetAddress(value as byte[]),对于所描述的查询,我只需调用 InetAddress.getAddress 它会返回一个 byte[])
您知道可能出现什么问题吗?我是否使用了错误的过滤器?
编辑:
我还使用了查询检索到的原始值作为 SingleColumnValueFilter 的值,结果没有差异,因此 byte[] 内容不可能是问题。
最佳答案
我想我自己可以给出答案,抱歉之前没有调试和检查所有 hbase 代码。
我刚刚检查了比较算法的实现(按字典顺序排列),因此我意识到没有考虑长度,尽管我认为它会用零填充;不幸的是事实并非如此。
唯一合理的选择是创建一个自定义比较器(例如参见How do you use a custom comparator with SingleColumnValueFilter on HBase?)
关于java - SingleColumnValueFilter 对结果没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291756/