我们已经成功实施了QualifierFilter
以及ValueFilter
(使用BinaryComparator
)Hbase,它们在大多数情况下都能正常运行。但是,在number > -10
或number < -10
请注意number = -10
工作正常。此外,number > 10
和number < 10
也正常运作。
如果您想查看代码,请查看以下链接:
1. QualifierFilter - 相关行数为126-142
2. Value Filter - 相关行数为107-128
根据this blog,如果我们想要为rowkeys存储负值,这可能是序列化的问题,我们应该编写自己的序列化器进行比较。
所以我们想知道:
1.在这种情况下是否真的有必要编写自己的序列化器?
如果是,怎么样?任何一个例子都会有很大的帮助。
答案 0 :(得分:3)
由于Hbase只有二进制比较器而不是其他“类型”比较器,因此无法对负整数进行过滤,因为它存储负数的2。此外,负2的补语整数的二进制表示将在最大正数之后按字典顺序排列,这就是它不起作用的原因。
解决方法是更改数字的有符号位。事后工作正常。请注意,这仅适用于整数而不适用于浮点类型。