Hbase 使用整数作为行键和字典顺序

Hbase use integer as row key and lexicographical order

我正在设计一个 Hbase 模式,其中行键应该是一个整数。我打算将 java 中的扫描 API 与带有整数值的 startrow 和 endrow 一起使用。

我想我可以使用 '0' 填充将我的整数转换为字符串以遵守字典顺序,但我的密钥将比使用整数的二进制表示大得多。

如果我对 startrow 和 endrow 使用相同的转换,我如何在 byte[] 中转换我的整数(比如 int)以便扫描将 return 预期值?

答案:

Nils 给出了答案,我在这里找到了确认:

Java Comparator for byte array (lexicographic)

Hbase 从 byte[] 中提取 int 并进行比较。

您可以使用 hbase-client 库中的 org.apache.hadoop.hbase.util.Bytes 来完成此操作。

从字节数组到整数:

Bytes.toInt(byteArray)

从整数到字节数组:

Bytes.toBytes(intvalue)

我实际上已经制作了一个在线工具来生成我需要在 hbase shell right here 中查询行 ID 的十六进制值。