我正在设计一个Hbase架构,其中行键应该是一个整数。我打算使用java中的scan API,其中startrow和endrow使用整数值。
我想我可以在'0'
填充字符串中转换我的整数来遵守字典顺序,但是我的键会比使用整数的二进制表示要大得多。
如何在int
中转换我的整数(让我们说byte[]
),以便如果我对startrow和endrow使用相同的转换,扫描将返回预期值?< / p>
答案:
Nils给了anwser,我在这里找到了一个确认:
Java Comparator for byte array (lexicographic)
Hbase从int
中提取byte[]
并进行比较。
答案 0 :(得分:1)
您可以使用hbase-client库中的org.apache.hadoop.hbase.util.Bytes来完成此操作。
从byte-array到int:
Bytes.toInt(byteArray)
从int到byte-array:
Bytes.toBytes(intvalue)
我实际上已经创建了一个在线工具来生成我需要在hbase shell right here中查询row-id所需的十六进制值。