加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – HBase:过滤器不适用于负整数

发布时间:2020-12-14 19:35:17 所属栏目:Java 来源:网络整理
导读:我们已经成功实现了Hifier的QualifierFilter和ValueFilter(使用BinaryComparator),并且它们在大多数情况下都能正常工作.然而,他们在数字等情况下失败了. -10或数字 -10 请注意,数字= -10正常工作.另外,数字 10和数字 10也工作正常. 如果您想查看代码,请查看
我们已经成功实现了Hifier的QualifierFilter和ValueFilter(使用BinaryComparator),并且它们在大多数情况下都能正常工作.然而,他们在数字>等情况下失败了. -10或数字< -10 请注意,数字= -10正常工作.另外,数字> 10和数字< 10也工作正常. 如果您想查看代码,请查看以下链接:
1. QualifierFilter – 相关行数为126-142
2. Value Filter – 相关行107-128

根据this blog,如果我们想要为rowkeys存储负值,这可能是序列化的问题,我们应该编写自己的序列化器进行比较.
所以我们想知道:
1.在这种情况下是否真的有必要编写自己的序列化程序?
如果是,怎么样?任何例子都会有很大的帮助.

解决方法

由于Hbase只有二进制比较器而不是其他“类型”比较器,因此无法对负整数进行过滤,因为它存储了负数的2.此外,负2的补码整数的二进制表示将在最大正数之后按字典顺序排列,这就是它不起作用的原因.

解决方法是更改??数字的有符号位.事后工作正常.请注意,这仅适用于整数而不适用于浮点类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读