我正在设计一个 Hbase 架构,其中行键应该是整数。我打算使用 java 中的 scan API 以及带有整数值的 startrow 和 endrow。
我想我可以用 '0'
填充将整数转换为字符串,以尊重字典顺序,但我的键将比使用整数的二进制表示形式大得多。
如何在 byte[]
中转换我的整数(比如说 int
),以便如果我对 startrow 使用相同的转换,扫描将返回预期值和endrow?
答案:
尼尔斯给出了答案,我在这里找到了确认:
Java Comparator for byte array (lexicographic)
Hbase 从 byte[]
中提取 int
并进行比较。
最佳答案
您可以使用 hbase-client 库中的 org.apache.hadoop.hbase.util.Bytes 来执行此操作。
从字节数组到int:
Bytes.toInt(byteArray)
从 int 到字节数组:
Bytes.toBytes(intvalue)
我实际上制作了一个在线工具来生成在 hbase shell 中查询 row-ids 所需的十六进制值 right here 。
关于java - Hbase使用整数作为行键和字典顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302145/