Hbase rowkey设计时遗留的陷阱
来源:互联网 发布:yy音效软件 编辑:程序博客网 时间:2024/05/17 23:12
我设计的rowkey是这种形式的: 商品ID#日期#机构ID#采购单号(#为字段间的分隔,方便范围查询),商品ID是一串long型的数值,具有连续性。为了充分发挥分布式的优点,需要将这些记录离散地存储在hbase集群的各节点上。此时我就将商品ID反转后再存储——Bytes.toBytes(Long.reverse(商品ID),以达到离散存储的目的。然后将这些字段分别转换成byte数组再通过Bytes.add()组装好当成rowkey。就这样我可以高效地根据rowkey去查询记录了,范围查询时只需要把startRow中的查询条件以#结尾,而stopRow的查询条件以$结尾。原因很简单#的ASCII码是35,$的ASCII码是36。
输出结果为:
35,-113,80,0,0,0,0,0,
35,
若商品ID是717252时,在我读取rowkey并split获取字段时就会出错。正常情况我split应该得到3个字段,而这种特殊情况我就会split得到4个字段。根本原因就是商品ID在反转后转换成byte时生成了与#号相同的字节码!!于是我陷入了沉思,如何规避这样的危险呢。其实很简单,数位数呗~
第一篇很水的个人技术博客,就这样ending吧~~
- Hbase rowkey设计时遗留的陷阱
- HBase的rowkey设计
- HBase的rowkey设计
- HBase的rowkey设计
- HBase的rowkey设计
- HBase的rowkey设计
- HBase的RowKey设计
- HBase的RowKey设计
- HBase的RowKey设计
- hbase的rowkey设计
- HBase的rowkey设计
- HBase的rowkey设计
- HBase RowKey的设计原则
- hbase的rowkey简单设计
- HBase的RowKey设计原则
- Hbase的存储 Rowkey设计
- HBase的RowKey设计原则
- HBase的RowKey设计原则
- linux自旋锁
- Mongodb用户和认证 权限总结
- 解决Fragment中放置ViewPager,不执行adapter的方法
- 制作Windows Server 2012的VHD
- ssh免密码登陆
- Hbase rowkey设计时遗留的陷阱
- 面向对象数据库(Object Oriented Databases
- codeforces-#472A. Design Tutorial: Learn from Math
- ssh证书
- codeforces-#472B. Design Tutorial: Learn from Life(贪心)
- leetcode Sum Root to Leaf Numbers my Solution
- Html细线表格的实现 打印边框设置
- IOS学习 Cell自定义
- 谷歌开源 Google I/O应用源代码,展示Android最佳实践